jQuery重新绑定。单击?
我有多个点击,我必须取消绑定一次点击,但我需要重新绑定的链接按钮 以下是一个例子:jQuery重新绑定。单击?,jquery,Jquery,我有多个点击,我必须取消绑定一次点击,但我需要重新绑定的链接按钮 以下是一个例子: $('.001').click(function(){ jQuery(this).unbind('click'); jQuery('.hide').hide(); jQuery('.show').show(); jQuery(this).find('.show').hide(); jQuery(this).find('.hide').load('page
$('.001').click(function(){
jQuery(this).unbind('click');
jQuery('.hide').hide();
jQuery('.show').show();
jQuery(this).find('.show').hide();
jQuery(this).find('.hide').load('pages/001.html');
jQuery(this).find('.hide').show();
});
$('.002').click(function(){
jQuery(this).unbind('click');
jQuery('.hide').hide();
jQuery('.show').show();
jQuery(this).find('.show').hide();
jQuery(this).find('.hide').load('pages/002.html');
jQuery(this).find('.hide').show();
});
因此,当我点击.001时,它会加载一个包含不同jQuery操作的页面(一个滑块),因此我必须解除对.001的点击绑定(因此是jQuery(this).unbind('click');),但当我点击.002时,我必须重新绑定.click on.001。这必须通过VAR完成,因为它可以从001到999
(i=1;i您不需要一次又一次绑定和重新绑定处理程序。只需将激活项的标识符存储在某个位置,然后在每个单击处理程序中检查它。如下所示:
for(i=1;i<1000;i++){
var query_str
var page_to_load;
if(i<10){
query_str = ".00"+i
page_to_load = "pages/00" + i + ".html"
}
else if(i>10 && i<100){
query_str = ".0"+i
page_to_load = "pages/0" + i + ".html"
}
else{
query_str = "."+i
page_to_load = "pages/" + i + ".html"
}
$(quer_str).click(function(){
jQuery(this).unbind('click');
jQuery('.hide').hide();
jQuery('.show').show();
jQuery(this).find('.show').hide();
jQuery(this).find('.hide').load(page_to_load);
jQuery(this).find('.hide').show();
});
}
var active;
$('.some_class').click(function() {
if (this.className === active) {
return false;
}
active = this.className;
...
});
<a class="first" data-url-to-go="/first.html">Some Link</a>
<a class="second" data-url-to-go="/second.html">Some Other Link</a>
...
var active;
$('.first, .second').click(function() {
if (this.className === active) {
return false;
}
active = this.className;
var $this = $(this),
url = $this.data('urlToGo');
...
});
此外,我强烈建议为所有相关项指定一个且仅一个函数作为事件处理程序,并根据外部属性对其操作进行分叉。如下所示:
var active;
$('.some_class').click(function() {
if (this.className === active) {
return false;
}
active = this.className;
...
});
<a class="first" data-url-to-go="/first.html">Some Link</a>
<a class="second" data-url-to-go="/second.html">Some Other Link</a>
...
var active;
$('.first, .second').click(function() {
if (this.className === active) {
return false;
}
active = this.className;
var $this = $(this),
url = $this.data('urlToGo');
...
});
说明了这个概念。看一下。它可能会帮助您对每个元素只执行一次事件。不要告诉我您有999个处理程序。据我所见,它似乎可以重新使用,只需稍加修改。@VisioN刚刚尝试过。第一,做了同样的事情,我在单击一次后无法重新单击。@Vega当然没有,因此我选择了它“我在这里我想这是你想要的这看起来不错,但问题是pages/001.html每次都会更改(002、003等),你想在.002时重新绑定.001”被点击?至少可以说,这是一种效率极低的方法。为什么要创建N个函数,每个函数对应一个新元素,而不是使用单个函数根据其参数生成URL?速度和内存方面都应该更好。好的,这很有效,只是一个简单的问题(希望您能够回答),我如何使用3位数的urlToGo?我有001,他只提示“1”。谢谢!