Jquery Live click函数不支持';行不通
我对Jquery live函数有一个问题。我正在动态添加数据,所以我必须使用live函数才能单击动态添加的元素Jquery Live click函数不支持';行不通,jquery,click,live,Jquery,Click,Live,我对Jquery live函数有一个问题。我正在动态添加数据,所以我必须使用live函数才能单击动态添加的元素 $("a.pm_member").live("click", function(){ alert('clicked'); }); 数据添加正确。没有错误消息,但不显示警报窗口 如果有人能帮我解决这个问题,我会很高兴的 编辑: 我想提供更多细节 这就是我在页面中使用的内容 <script> new TINY.editor.ed
$("a.pm_member").live("click", function(){
alert('clicked');
});
数据添加正确。没有错误消息,但不显示警报窗口
如果有人能帮我解决这个问题,我会很高兴的
编辑:
我想提供更多细节
这就是我在页面中使用的内容
<script>
new TINY.editor.edit('editor',{
id:'tiny_input',
height:200,
cssclass:'te',
controlclass:'tecontrol',
rowclass:'teheader',
dividerclass:'tedivider',
controls:['bold','italic','underline','strikethrough','|','subscript','superscript','|',
'orderedlist','unorderedlist','|','outdent','indent','|','leftalign',
'centeralign','rightalign','blockjustify','|','unformat','|','undo','redo','n','image','hr','link','unlink','|','cut','copy','paste','print','|','font','size','style'],
footer:false,
fonts:['Arial','Verdana','Georgia','Trebuchet MS'],
xhtml:true,
cssfile:'style.css',
bodyid:'editor',
footerclass:'tefooter',
toggle:{text:'source',activetext:'wysiwyg',cssclass:'toggler'},
resize:{cssclass:'resize'}
});
$('button#post').click(function () {
editor.post();
});
$('#suggestions').hide();
function hideSuggestions () {
$('#suggestions').hide();
}
$("a.pm_member").live("click", function(){
alert('clicked');
});
</script>
再次感谢您的帮助和关注。尝试使用bind()而不是live(),
如果这不起作用,我建议使用find()
范例
如果parentClass是具有类pm_成员的锚点的父类
用这个
$(".parentClass")find("a.pm_member").live("click", function(){
alert('clicked');
});
有关查找()的参考信息-->
有关bind()的参考-->请尝试使用bind()而不是live(),
如果这不起作用,我建议使用find()
范例
如果parentClass是具有类pm_成员的锚点的父类
用这个
$(".parentClass")find("a.pm_member").live("click", function(){
alert('clicked');
});
有关查找()的参考信息-->
有关bind()-->的参考信息,如果您有
,请单击“a.pm_成员”
元素中任何返回false的祖先上的处理程序
或事件.stopPropagation()
,它将杀死.live()
这是因为.live()
完全依赖于事件委派
这意味着只有从单击的元素到文档
成功冒泡的事件才能由.live()
分析并可能调用
如果事件被某个祖先暂停,则.live()
处理程序将永远看不到该事件
编辑:
这是一个祖先的示例,它分配了一个防止冒泡的处理程序
示例:
移除阻止冒泡的处理程序会导致.live()
处理程序再次工作
示例:
编辑:
具体的问题是,在
元素的#suggestions
元素前面有一个内联的onblur=“hideSuggestions()”
这似乎用于在单击任意位置时删除对话框。因此,blur
事件发生在单击之前,因此它从不注册
这个问题没有完美的解决方案。无论如何,模糊将在单击之前发生
一种可能是使用mousedown
事件,该事件应发生在blur
之前。当然,这不是一个完整的点击,但它可能已经足够好了
我个人会使用.delegate()
而不是.live()
,但两者都可以。下面是一个.delegate()
示例:
$('#suggestions').delegate('a.pm_member', 'mousedown', function() {
// your code
});
另一种可能是将代码分配到建议
元素之前的同一输入元素。当然,这会在您单击的任何位置触发,因此它可能不是您想要的。如果您的a.pmu成员的元素的任何祖先上有click
处理程序,并且返回false
或事件.stopPropagation()
,它将杀死.live()
这是因为.live()
完全依赖于事件委派
这意味着只有从单击的元素到文档
成功冒泡的事件才能由.live()
分析并可能调用
如果事件被某个祖先暂停,则.live()
处理程序将永远看不到该事件
编辑:
这是一个祖先的示例,它分配了一个防止冒泡的处理程序
示例:
移除阻止冒泡的处理程序会导致.live()
处理程序再次工作
示例:
编辑:
具体的问题是,在
元素的#suggestions
元素前面有一个内联的onblur=“hideSuggestions()”
这似乎用于在单击任意位置时删除对话框。因此,blur
事件发生在单击之前,因此它从不注册
这个问题没有完美的解决方案。无论如何,模糊将在单击之前发生
一种可能是使用mousedown
事件,该事件应发生在blur
之前。当然,这不是一个完整的点击,但它可能已经足够好了
我个人会使用.delegate()
而不是.live()
,但两者都可以。下面是一个.delegate()
示例:
$('#suggestions').delegate('a.pm_member', 'mousedown', function() {
// your code
});
另一种可能是将代码分配到建议
元素之前的同一输入元素。当然,这会在您单击的任何位置触发,因此它可能不是您想要的。您可以发布JSFIDLE吗?我们需要更多的细节来回答你的问题。从您发布的代码来看,它似乎应该可以工作。生成的HTML是什么,预计会触发单击事件?@此代码在您的页面中的何处,如果在此之前出现中断,这些绑定可能尚未附加。您可以发布JSFIDLE吗?我们需要更多的细节来回答你的问题。从您发布的代码来看,它似乎应该可以工作。生成的HTML是什么,预计会触发单击事件?@此代码在您的页面中的何处,如果在此之前出现问题,这些绑定可能尚未附加Hello,感谢您的解释。问题是我没有阻止元素的东西。@Pixeler:你是说没有其他的点击处理程序附加到a.pmu成员
从中下降的任何元素上?它们可以是内联的onclick=“someFunc()”
属性,也可以是由另一个脚本分配的代码。如果没有那样的事,你会
$(".parentClass")find("a.pm_member").live("click", function(){
alert('clicked');
});
$('#suggestions').delegate('a.pm_member', 'mousedown', function() {
// your code
});