HY,
一个非常愚蠢的问题,但我无法让它发挥作用:
我有一些功能可以绑定我导航的点击。当链接是clicker时,它会使类“活动”。所以我的想法是我只是说:
<a id="link1" class="main">link1</a>
<a id="link2" class="main">link2</a>
<a id="link3" class="main">link3</a>
$('a.main').bind('click', function(){
$(this).removeClass('active');
//some code
$(this).addClass('active');
}
到目前为止工作正常。我的元素在命中时获取活动类,在单击其他类时移除。我的想法现在只是简单解开所有活动链接(否则一些双重加载发生在我的导航上的偏执10000次点击=)
§('a.active').unbind('click');
我还为导航中的每个元素指定了一个特殊事件:
$('a#link1').bind('click', function() {
$img.fadeOut('slow', function() {
$('#bg div table tr td').addClass('loading');
$img.attr('src', 'images/image.jpg');
});
});
现在发生的事情是,如果我点击导航中的一个元素(手风琴),那么事物会向下滑动,获得活动类(仍保留主类):
<a id="link1" class="main active">link1</a>
当我点击导航中的另一个元素时,会关闭此元素并删除活动类。
但是当我之前回到那个链接时,它再也无法点击了吗?所以,我想jQuery从一个活跃的元素中取消了click事件的永久绑定。对我来说听起来有点愚蠢和不合逻辑......
也许有办法启用/解除这些。因此,一个检查元素是否具有活动类的函数应该被禁用。或者问题是“主动”类旁边的“主要”类......
有什么想法吗?
答案 0 :(得分:0)
您可以命名事件处理程序,这样您就可以轻松解除它们的绑定,而不会影响附加到相同元素的相同类型的其他处理程序:
$('a.main').bind('click.activeState', function() {
...
});
$('a.active').unbind('click.activeState');
// and instead of binding several times, you can use attributeStartswith
$('a[id^=link]').bind('click.animation', function() {
...
});
答案 1 :(得分:0)
我认为你不明白jQuery事件绑定是如何工作的。你的问题不是很清楚,那里有一些错误的断言/假设。或者也许我只是不明白这个问题:)
无论如何,如果你只是想阻止重复点击,我会选择像
这样的东西$('a:not(.active)').live('click', function(){
$(this).siblings().removeClass('active');
$(this).addClass('active');
// ...do whatever here
});
演示here。