首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery重新绑定.click?

jQuery重新绑定.click?
EN

Stack Overflow用户
提问于 2012-10-18 22:30:42
回答 2查看 728关注 0票数 0

我有多个点击,我必须解除绑定一旦点击,但我需要重新绑定的链接按钮。

下面是一个示例:

代码语言:javascript
运行
复制
$('.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时,我必须在.001上重新绑定.click。这必须使用vars来完成,因为它可以从001到999。

有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-18 22:47:51

您无需一次又一次地绑定和重新绑定处理程序。只需将激活项的标识符存储在某个位置,然后在每个单击处理程序中检查它。如下所示:

代码语言:javascript
运行
复制
var active;
$('.some_class').click(function() {
  if (this.className === active) {
    return false;
  }
  active = this.className;
  ...
});

此外,我强烈建议为所有有问题的项分配一个且只有一个函数作为事件处理程序,根据外部属性派生其操作。如下所示:

代码语言:javascript
运行
复制
<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');
  ...
});

这里有一个说明这个概念的。

票数 2
EN

Stack Overflow用户

发布于 2012-10-18 22:37:25

代码语言:javascript
运行
复制
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();

    }); 

}

这将不是很好的性能,但这是您所要求的

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12957031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档