首先 - 我在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”事件处理程序(绑定),即禁用(解除绑定)。但是,取消绑定根本不起作用。
我希望我已提供所有相关信息,如有需要请另外提供。
感谢任何帮助。
答案 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');
});
我会尝试,看看会发生什么。