0

我有多次点击,一旦点击就必须取消绑定,但我需要重新绑定链接的按钮。

这是一个例子:

$('.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。这必须使用 vars 完成,因为它可以从 001 到 999。

有小费吗 ?

4

2 回答 2

2

您不需要一次又一次地绑定和重新绑定处理程序。只需将激活项的标识符存储在某处,然后在每个单击处理程序中检查它。像这样:

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');
  ...
});

这是一个说明这个概念的JS Fiddle 。

于 2012-10-18T14:47:51.020 回答
-1
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();

    }); 

}

这不会是好的表现,但这是你要求的

于 2012-10-18T14:37:25.207 回答