Jquery取消绑定不起作用

时间:2015-12-15 12:15:50

标签: jquery unbind

首先 - 我在Stackoverflow上看到了很多关于使用jQuery 进行解绑的问题,但是我找不到可以解决我特定情况的答案。我可能错过了一些东西 - 随时可以向我发送已发布的相关问题/答案 - 谢谢!

我在实现事件/处理程序取消绑定不起作用时遇到问题。

我正在使用Wordpress 4.4(虽然我猜Wordpress与此无关),Firefox 42,jQuery 1.11.3。

我的.html和.js文件的相关部分 - 这是html部分:

<div class="py2web-diag-row1-col2">
<ul class="tabs">
    <li> <a class="sol-show" target="<?php echo($id); ?>">Show solution</a> </li>
    <li><a class="sol-hide" target="<?php echo($id); ?>" disabled>Hide solution</a></li>
</ul>
</div>

scripts.js文件中的相关部分:

jQuery(".sol-hide").click(function() {

    // Get id of the corresponding problem solution
    id = this.attributes["target"].value;

    // Show (unhide) solution div element with target attribute of the current problem
    sel = '.p2w-solution[target="' + id + '"]';
    jQuery(sel).css("visibility", "hidden");

    // Deactivate hide-sol and activate show-sol
    sel = '.sol-hide[target="' + id + '"]';
    jQuery(sel).attr("disabled", false);
    this.setAttribute("disabled", true);

    // Activate py2web-s internal events (show moves when clicking on board)
    sel = '.p2w-diagram[id="' + id + '"] .p2w-nav-fwd';
    //jQuery(sel).off("click");
    jQuery(sel).unbind("click");
    sel = '.p2w-diagram[id="' + id + '"] .p2w-nav-bwd';
    //jQuery(sel).off("click");
    jQuery(sel).unbind("click");
});

.p2w-nav-fwd(bwd)元素的Click事件处理程序在另一个js文件中定义,如下所示:

jQuery(".p2w-nav-fwd").bind("click", Py2Web.navigateForward);
jQuery(".p2w-nav-bwd").bind("click", Py2Web.navigateBackward);

以及在Py2Web定义中的一点点:

navigateForward: function(L) {
        L.preventDefault();
        C(jQuery('.p2w-solution[target="' + jQuery(this).parent().attr("id") + '"]').children(".active").nextAll("a").first())
    },
navigateBackward: function(L) {
        L.preventDefault();
        C(jQuery('.p2w-solution[target="' + jQuery(this).parent().attr("id") + '"]').children(".active").prevAll("a").first())
    }

因此,通过单击“.sol-show”,即“.sol-hide”,锚点,应该启用.p2w-nav-fwd和.p2w-nav-bwd元素的“click”事件处理程序(绑定),即禁用(解除绑定)。但是,取消绑定根本不起作用。

我希望我已提供所有相关信息,如有需要请另外提供。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我解决了问题:在Wordpress中,我正在加载我的本地版本的jQuery,而不是Wordpress&#39;默认 - 但默认是在本地后加载 - 现在我已经改变了加载顺序,所以我的所有脚本只在jQuery 之后加载 - 并且它工作正常。 ..我应该早点意识到。感谢您的帮助,感谢您的时间。

答案 1 :(得分:0)

你确定选择器正在工作并找到元素吗?

sel = '.p2w-solution[target="' + id + '"]';

此外,我将使用&#34; On&#34;而不是点击和绑定。和&#34;关&#34;方法,因为我之前遇到过问题&#34;点击&#34;并且&#34;解开&#34;而且我看到了你正在使用的东西。

所以,你可以使用这样的东西:

jQuery(".sol-hide").on('click', function () { 
   sel = '.p2w-solution[target="' + id + '"]';

   ...

   jQuery(sel).off('click');
});

我会尝试,看看会发生什么。