Jquery Live click函数不支持';行不通

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

我对Jquery live函数有一个问题。我正在动态添加数据,所以我必须使用live函数才能单击动态添加的元素

$("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
});