jQuery选择器仅适用于前向元素

时间:2012-10-16 21:41:19

标签: jquery jquery-ui

我编写了一些提供非常基本功能的小代码,它使用默认的jQuery选择方法。它的工作原理如下: 有2个包含链接的li。单击链接时,jQuery会判断li是否具有某个css类;如果没有,它会执行所需的操作。

坦率地说,它只适用于第二个李没有这个课程,而不是第一个没有。

有人能说出为什么会发生这种情况以及如何解决这个问题吗?

jsfillde在这里,让事情变得更加清晰:http://jsfiddle.net/EDa7n/

2 个答案:

答案 0 :(得分:3)

您只是将click函数绑定到锚定非活动的标记。

您需要将所有内容绑定到click函数中,检查该类是否处于活动状态。

http://jsfiddle.net/jimschubert/EDa7n/1/

$(".ui-tabs-nav li a").click(function(){ //Weird, it works only for the second li, not for the first (eg when the second is active)
    $('#BT-tabVerbetering, #BT-tabWens').show();
    if(!$(this).hasClass("ui-state-active")) 
        $('#BT-nieuw').hide();
});

答案 1 :(得分:2)

事件在调用事件绑定方法时绑定到元素。更改元素的类不会更改绑定到元素的事件。例如,此点击事件:

$("#BT-menu li:not(.ui-state-active) a").click(function(){...

li:not(.ui-state-active) a将事件绑定到第二个选项卡,而不是第一个选项卡。第一个选项卡永远不会绑定此事件,第二个选项卡将始终绑定事件。相反,您应该使用

将事件绑定到两个元素
$("#BT-menu li a").click(function(){...

然后检测它是否在事件中处于活动状态。


Unreleated,但你真的应该在你的问题中发布相关的代码和标记,而不是简单地链接到jsfiddle。小提琴是问题的一个很好的补充,但它不是实际发布代码的替代品。