我编写了一些小代码,提供了非常基本的功能,并且使用了默认的 jQuery 选择方法。它的工作原理是这样的:有 2 个 li 包含一个链接。单击链接时,jQuery 会检查 li 是否具有某个 css 类;如果没有,它会执行所需的操作。
坦率地说,它仅在第二个 li 没有此类时才有效,而不是在第一个 li 没有时。
谁能说出为什么会发生这种情况以及如何解决?
jsfillde 在这里,让事情变得更加清晰:http: //jsfiddle.net/EDa7n/
我编写了一些小代码,提供了非常基本的功能,并且使用了默认的 jQuery 选择方法。它的工作原理是这样的:有 2 个 li 包含一个链接。单击链接时,jQuery 会检查 li 是否具有某个 css 类;如果没有,它会执行所需的操作。
坦率地说,它仅在第二个 li 没有此类时才有效,而不是在第一个 li 没有时。
谁能说出为什么会发生这种情况以及如何解决?
jsfillde 在这里,让事情变得更加清晰:http: //jsfiddle.net/EDa7n/
您只是将点击功能绑定到不活动的锚标记。
您需要将它们全部绑定并在单击功能中检查该类是否处于活动状态。
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();
});
在调用事件绑定方法时,事件被绑定到元素。更改元素的类不会更改绑定到元素的事件。比如这个点击事件:
$("#BT-menu li:not(.ui-state-active) a").click(function(){...
将li:not(.ui-state-active) a
事件绑定到第二个选项卡,而不是第一个。第一个选项卡永远不会绑定此事件,第二个选项卡将始终绑定事件。相反,您应该将事件绑定到两个元素
$("#BT-menu li a").click(function(){...
然后检测它是否在事件中处于活动状态。
不相关,但您确实应该在您的问题中发布相关代码和标记,而不是简单地链接到 jsfiddle。小提琴是对问题的一个很好的补充,但它不能替代实际发布代码。