Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery.click()事件故障_Javascript_Jquery - Fatal编程技术网

Javascript JQuery.click()事件故障

Javascript JQuery.click()事件故障,javascript,jquery,Javascript,Jquery,以下是我的代码片段: $(".item").click(function () { alert("clicked!"); }); 我在我的页面上有(假设;实际上要复杂得多)以下内容: <a href="#" class="item"><img src="1.jpg" /></a> 但是,当我单击该图像时,不会收到警报 我的错误是什么?使用绑定 $(“.item”).bind(“单击”,函数(e){…}) 您的选择器是否与

以下是我的代码片段:

    $(".item").click(function () {
        alert("clicked!");
    });
我在我的页面上有(假设;实际上要复杂得多)以下内容:

<a href="#" class="item"><img src="1.jpg" /></a>

但是,当我单击该图像时,不会收到警报

我的错误是什么?

使用绑定


$(“.item”).bind(“单击”,函数(e){…})

您的选择器是否与任何内容匹配?尝试使用jQuery调试插件()并执行以下操作:

$(".item").debug().click(function() {
    alert("clicked!");
});
.debug()将记录与Firebug控制台匹配的任何内容(您正在使用Firebug,对吗?:-)而不会“断开链”,因此您可以像这样内联使用它

如果结果正确,浏览器在显示警报之前导航到“#”可能会出现一些问题。尝试对事件对象使用.preventDefault()方法来防止此行为:

$(".item").click(function(evt) {
    evt.preventDefault();
    alert("clicked!");
});

修改选择器


$(“.item>img”)

我最近在添加上下文菜单jquery插件后遇到了这个问题。插件绑定到主体的click事件,然后解除绑定click事件-它似乎删除了所有元素的所有绑定到click事件。可能是一个关闭插件或检查您是否未解除绑定的建议。单击父元素自己。

第一个问题-您是否添加要动态单击的元素?如果是,, 您应该使用live事件,因为它将处理动态创建的元素


您发布的代码是正确的,因此我怀疑您没有考虑到其他问题

首先,如果某个地方有错误(即使不是在代码的确切位置),可能会导致它停止工作。在这一行后面放一个警报,检查它是否运行


检查是否没有其他元素正在捕获事件并阻止其传播。这曾经咬过我。。。如果在处理包含
stopPropagation()
return false
的单击时还有其他内容,那可能就是问题所在。

我发现的一件事(尽管只有其他地方的链接)是添加return false;如果只是抛锚而不是评估警报,可能会有所帮助。我真的说不出为什么会这样,但这是我最近发现的一个类似问题的解决方案。

如果不是这样,那么其他地方就出了问题
.bind('click',fn)
.click(fn)
是等效的。实际上,
.click()
使用
.bind('click',fn)
。如果您想亲自查看,请查看jQuery 1.3.2未压缩、未缩小的源代码的第3099行。您的真实代码是否在
$(document).ready()
中?是的,它是–我还有其他代码正在工作和执行。结果也不起作用。。。也许我应该附加我所有的代码和XHTML?另外,看起来(当我查看源代码时)动态添加的HTML(通过JQuery的AJAX)实际上不在源代码中,但可以通过Firebug或Safari的inspector查看。我不确定这是否正常。您的代码段()正在动态加载?如果是这样,这是非常重要的信息!它是动态添加的,我真的没有意识到这有什么意义。我是Javascript新手,几天前才真正开始使用它。为什么这会改变$.click()的工作方式?这似乎与我的直觉相反,但我认为.click()仅绑定到文档.ready()时加载到DOM中的对象。因此,在项目加载后使用live()或显式调用click()函数是一种修复方法。谢谢大家!!没有骰子。我不认为问题出在选择器上(我已经尝试过很多次)。问题出在我动态添加事件这一事实上——我最终通过在成功函数中调用函数,在添加项之后显式调用函数来解决问题。非常感谢。