Javascript on click事件在函数中不起作用,但在document.ready()中起作用
Javascript on click event not working within a function but works in document.ready()
在我的document.ready()中,我有几个按钮(a、b、c),单击它们时会调用一个特定的方法。然而,当我点击按钮(d)时,我需要按钮(a、b、c)停止调用它们的特定方法,并且在点击时什么也不做。我尝试使用preventDefault()方法,但它不起作用。有人请帮忙!提前感谢:)
$(document).ready(function(){
...
// my buttons (a,b,c) which call method fA
$("#a, #b, #c").on("click", fA);
// my button (d) which call method fB
$('#d').on("click", fB);
...
});
// When button (d) is clicked, I want buttons a,b,c to be non-clickable and this method should not be called.
function fA() {
// does a AJAX request
$.ajax({
url: ...,
data: ...,
dataType: "script"
});
}
function fB() {
$("#a, #b, #c").on("click", function(e) {
e.preventDefault(); // THIS IS NOT WORKING!
});
...
//Does its own unique AJAX request
}
调用.on()
时,不会替换事件处理程序—它们被添加。对于同一事件,任何元素都可以有许多事件处理程序。您成功地添加了新的"点击"处理程序,但旧的处理程序仍然存在。
可以使用.off()
删除特定事件的所有处理程序。
$('#a, #b, #c').off("click");
如果希望暂时禁用某些现有的处理程序,可以直接在所涉及的元素上设置"disabled"属性(前提是它们是正确类型的元素),也可以使用自己的标记机制。
作为一个"标记"以知道处理程序何时应该/不应该操作的例子,您可以使用一个类:
function fA() {
if ($(this).hasClass('inactive')) return;
// does a AJAX request
$.ajax({
url: ...,
data: ...,
dataType: "script"
});
}
function fB() {
$("#a, #b, #c").addClass('inactive');
// ...
当你想让"A"函数重新开始工作时,你可以删除这个类:
$('#a, #b, #c').removeClass('inactive');
将函数fB更改为:
function fB() {
$("#a, #b, #c").off("click");
...
//Does its own unique AJAX request
}
相关文章:
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 如何将字符串拆分为字符,但在javascript中保留空格
- JavaScript获胜't运行,但在jsFiddle中工作
- 列表样式在IE中未设置为none,但在IE中适用
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 滚动在Chrome中有效,但在Firefox或IE中无效
- jQuery自动完成在Firefox中运行良好,但在Chrome中则不然
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- appendChild在函数外部工作,但在函数内部不工作
- Javascript on click事件在函数中不起作用,但在document.ready()中起作用
- 为什么这个setInterval/document.write代码在Chrome上有效,但在Firefox上不起作用
- Rails 应用程序 - jQuery Document.ready在单击链接时不调用,但在新选项卡中打开或刷新时工作
- .js代码中给出的document.location()函数在Internet Explorer中工作正常,但在Fire
- iFrame文本没有显示在Firefox上,但在Chrome上工作(document.body.innerHTML)
- $(document).ready在IE中只启动一次,但在Firefox中有效
- document.getElementById('button').click() 在我的电脑上工作,但在另一台电脑上不
- 跨浏览器问题:document.getElementById().值在IE中不工作,但在Firefox中工作
- Document.getElementsByName()在IE中返回对象,但在chrome中返回对象节点列表