【问题标题】:Cannot unbind a click event?无法解绑点击事件?
【发布时间】:2013-08-02 09:05:10
【问题描述】:

我正在尝试撤消在网页标题的链接 JS 文件中添加的事件处理程序/侦听器。

基本设置:

<form id="form_enter_giveaway" action="" method="post">
 <input type="hidden" name="form_key" value="04b931caff99a0a688241e6da5f09839">
 <input type="hidden" name="enter_giveaway" value="1">
 <a href="" class="rounded view submit_entry">Enter to Win! (1P)</a>
</form>

JS文件(http://www.steamgifts.com/js/header_functions.js):

$('.submit_entry, .remove_entry').click(function(){
 $('#form_enter_giveaway').submit();
 return false;
});

如果我单击该链接,则不会运行任何本地程序,并且搜索对该链接的每个引用以及该表单通常似乎表明该单段 JS 是唯一可能导致表单提交的东西. 但是我用控制台尝试过$('.submit_entry, .remove_entry').unbind().off()die();所有有和没有“点击”的,每次我点击那个链接标签它仍然提交。它正在干扰我想在它的位置运行的事件。

【问题讨论】:

  • 我认为您必须发布更多代码。
  • 要取消绑定事件,签名应该类似于绑定方式
  • 据我所知,没有其他代码可以以任何方式与这些 sn-ps 交互。除了复制整个网站 (steamgifts.c​​om),我想不出我还能包含更多内容。
  • 您能在该函数中指向一个断点并对其进行调试以确保它击中它吗?
  • 将 href="" 更改为 href="#"。在 Chrome 中,空的 href 似乎正在发布表单。

标签: html forms submit jquery


【解决方案1】:

试试这个

var $selector = $('.submit_entry, .remove_entry');

// Binding the event using on so that it can be unbinded later
//  that triggers the submitForm handler
$selector.on('click', submitForm);

function submitForm() {
    $('#form_enter_giveaway').submit();
    return false
}

// Unbind the event using off
$selector.off('click');

// Bind the event and prevent the default action of anchor
$selector.on('click', function(e) {
    e.preventDefault();
});

Check Fiddle

【讨论】:

  • 我的 Chrome(据我所知是最新的)似乎不喜欢 onoff。我得到[object Object] has no method 'off'。但我会试试这个 preventDefault();
  • 似乎没有任何效果,我输入了一个警报,它被调用了,但是preventDefault 并没有改变任何东西。
  • 我以前从未接触过 jQuery。现在我想起来了,我可能与该网站的 jQuery 相关联。如果是这样的话,我使用的是 1.5.2.min
  • @JonathonWisnoski 这就是原因。该版本不支持.on().off()。请至少升级到 jQuery 1.8,然后试试这个代码。
  • @JonathonWisnoski $('.submit_entry').attr('href', '#')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多