首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery .bind() / .unbind()问题

JQuery .bind() / .unbind()问题
EN

Stack Overflow用户
提问于 2011-08-13 04:49:25
回答 1查看 583关注 0票数 0

我在JQuery中使用.bind().unbind()时遇到了一些奇怪的行为,尽管我的情况似乎与JQuery站点上给出的一个示例完全相同。在这种情况下,绑定/解除绑定应用于JQuery选项卡(多个选项卡中的一个)。单击该选项卡时,它将通过ajax加载一个控制器操作。

代码语言:javascript
复制
# show.html.erb:
$(document).ready( function(){
    var projectNav = function(){
        $("#tabs-project .loadingDiv").show();
        $.ajax({ url: "<%= url_for(params.except(:action).merge(:action => 'show_project')) %>", dataType: 'script' })
    };
    $("#projectMenuButton").bind('click', projectNav);
});

# show_project.js.erb
$("#tabs-project .loadingDiv").remove();
$("#tabs-project").append('<%= escape_javascript(render :partial => "profiles/project")%>')
$("#projectMenuButton").unbind('click', projectNav);

.unbind()部件不是这样工作的-再次单击菜单按钮将再次重新加载部分。

当我将现有的unbind更改为$("#projectMenuButton").unbind('click');时,它将解绑所有内容,包括选项卡的主要函数(将视图切换到右div)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-13 04:51:17

你有一个范围问题...projectNav仅在$(document).ready的作用域中定义,因此在传递到unbind时是未定义的。一种解决方案:

代码语言:javascript
复制
# show.html.erb:
var projectNav = function(){
        $("#tabs-project .loadingDiv").show();
        $.ajax({ url: "<%= url_for(params.except(:action).merge(:action => 'show_project')) %>", dataType: 'script' })
};
$(document).ready( function(){
    $("#projectMenuButton").bind('click', projectNav);
});

# show_project.js.erb
$("#tabs-project .loadingDiv").remove();
$("#tabs-project").append('<%= escape_javascript(render :partial => "profiles/project")%>')
$("#projectMenuButton").unbind('click', projectNav);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7046152

复制
相关文章

相似问题

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