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”。谢谢!