javascript - 我想简化菜单

标签 javascript jquery jquery-selectors

有没有办法简化这个?

jQuery(function ($) {

    $("#bt1").on("click", function () {
        $(this).css("background-image", "url(css/fondos/fondotopActivo.png)");
        $("#bt2").css("background-image", "");
        $("#bt3").css("background-image", "");
        $("#bt4").css("background-image", "");
        $("#bt5").css("background-image", "");
        $("#bt6").css("background-image", "");
        $("#bt7").css("background-image", "");
    });

    $("#bt2").on("click", function () {
        $(this).css("background-image", "url(css/fondos/fondotopActivo.png)");
        $("#bt1").css("background-image", "");
        $("#bt3").css("background-image", "");
        $("#bt4").css("background-image", "");
        $("#bt5").css("background-image", "");
        $("#bt6").css("background-image", "");
        $("#bt7").css("background-image", "");
    });

    $("#bt3").on("click", function () {
        $(this).css("background-image", "url(css/fondos/fondotopActivo.png)");
        $("#bt1").css("background-image", "");
        $("#bt2").css("background-image", "");
        $("#bt4").css("background-image", "");
        $("#bt5").css("background-image", "");
        $("#bt6").css("background-image", "");
        $("#bt7").css("background-image", "");
    });

    $("#bt4").on("click", function () {
        $(this).css("background-image", "url(css/fondos/fondotopActivo.png)");
        $("#bt1").css("background-image", "");
        $("#bt2").css("background-image", "");
        $("#bt3").css("background-image", "");
        $("#bt5").css("background-image", "");
        $("#bt6").css("background-image", "");
        $("#bt7").css("background-image", "");
    });

    $("#bt5").on("click", function () {
        $(this).css("background-image", "url(css/fondos/fondotopActivo.png)");
        $("#bt1").css("background-image", "");
        $("#bt2").css("background-image", "");
        $("#bt4").css("background-image", "");
        $("#bt3").css("background-image", "");
        $("#bt6").css("background-image", "");
        $("#bt7").css("background-image", "");
    });

    $("#bt6").on("click", function () {
        $(this).css("background-image", "url(css/fondos/fondotopActivo.png)");
        $("#bt1").css("background-image", "");
        $("#bt2").css("background-image", "");
        $("#bt4").css("background-image", "");
        $("#bt5").css("background-image", "");
        $("#bt3").css("background-image", "");
        $("#bt7").css("background-image", "");
    });

    $("#bt7").on("click", function () {
        $(this).css("background-image", "url(css/fondos/fondotopActivo.png)");
        $("#bt1").css("background-image", "");
        $("#bt2").css("background-image", "");
        $("#bt4").css("background-image", "");
        $("#bt5").css("background-image", "");
        $("#bt6").css("background-image", "");
        $("#bt3").css("background-image", "");
    });
});

它工作正常,但我想让它更轻。

最佳答案

尝试:

  var $allBts =  $("[id^=bt]");
  $allBts.on("click", function () {
        $allBts.css("background-image","");
        $(this).css("background-image","url(css/fondos/fondotopActivo.png)");
   });

   $allBts.on("click", function () {
        $allBts.not($(this).css("background-image","url(css/fondos/fondotopActivo.png)")).css("background-image","");
   });

这使用 attribute starts with selector匹配基于起始属性值的元素,这里是一个 id。但是您应该确保使用这些元素所在的上下文作为父容器,以避免选择不需要的元素。或者将它们与它们的类型组合在一起,例如在容器 wrapper 中的 ex a div 然后

$("div[id^=bt]")

或更具体:

$('.wrapper').find("div[id^=bt]");

但我会建议,如果可能的话,为它们提供一个通用的类名并使用类选择器,因为它比属性选择器更快。

关于javascript - 我想简化菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461386/

相关文章:

javascript - Three.js:结合 tween.js 围绕世界轴旋转对象

javascript - 如何在单次运行期间使用 karma test-runner 测试两个具有相同名称的不同类?

jQuery .each 函数帮助

php - 用于 PHP 的 JQuery 的 $ 函数

javascript - React,映射中等复杂的 json 对象以获取消息内的键

javascript - BxSlider 上的链接在 Google Chrome 中不起作用,但在所有其他浏览器中都起作用

javascript - 使用日期选择器禁用今天之前的日期

JQuery 更改 CSS 显示不起作用

Javascript,如果 true 添加字符串

jQuery 选择器 [名称=值] 不起作用