出于某种原因,我无法触发点击事件的“on”事件。这是调用和HTML的样子:
HTML:
<a class="cmt-replies-show" href="javascript:void(0)" id="cmt-count" style="">
<span>View All</span>
</a>
jQuery的:
$('.cmt-replies-show').on("click", function(e) {
e.preventDefault();
alert("Clicked");
});
知道我缺少什么吗?
答案 0 :(得分:3)
最可能的原因是绑定事件时元素不在DOM中。
如果您动态添加元素,则可以执行以下操作:
$(document.body).on("click", '.cmt-replies-show', function(e) {
如果您的脚本包含在元素前面的页面中,您可以在正文末尾移动脚本,也可以在ready
事件中调用代码:
$(function(){
$('.cmt-replies-show').on("click", function(e) {
e.preventDefault();
alert("Clicked");
});
});
答案 1 :(得分:0)
如果您尝试访问动态注入DOM的元素,则应使用以下语法:
$(document).on('click', '.cmt-replies-show', function(e) {
// your code goes here
});
document
可以替换为文档准备就绪时可用的每个父项。
答案 2 :(得分:0)
保罗所说的 - 确保在DOM准备就绪后绑定事件。
仅供参考,如果您直接使用'on'定位元素,则可以使用$('a')。click(function(){...}); 。如果你想委托像这样的事件,“开启”会更有用:
$('#container').on('click','a',function(){
});
答案 3 :(得分:0)
您可能在脚本执行后定义了div。
将其包裹在$(document).ready(function() { .... });
中,以确保在完整DOM可用后执行。
答案 4 :(得分:0)
我理解在页面上动态注入此链接的原因。您的DOM已处于就绪状态,并且在注入此部分代码时会读取所有函数。
注入HTML时,请使用单击功能绑定元素。
使用live()应该可以解决你的目的 -
$('#yourLink').live('click', function(){
//Your logic here
});