如何使用jQuery向li动态添加单击处理程序

如何使用jQuery向li动态添加单击处理程序,jquery,Jquery,我正在尝试向通过jQuery添加到DOM的li中添加一个单击处理程序。我以为你就是这样做的: jQuery('.deleteUpload').on('click', '.deleteUpload', function() { var strDocId = jQuery(this).prop('id'); //if (confirm('Are you sure you want to delete this resource') == true) { $.post(

我正在尝试向通过jQuery添加到DOM的
li
中添加一个单击处理程序。我以为你就是这样做的:

jQuery('.deleteUpload').on('click', '.deleteUpload', function() {
    var strDocId = jQuery(this).prop('id');
    //if (confirm('Are you sure you want to delete this resource') == true) {
        $.post('/study-clubs/meetings/delete-upload', {strDocId : strDocId},
            function(objData){
                console.log(objData);
            }
        );
        jQuery('li#' + strDocId).remove();
    //}

    return false;
});
这是我的标记:

<li class="pdf deleteLi" id="<?php echo $this->escape($this->objDocRow->id); ?>">
   <label><input type="radio" name="documents[1]" value="0" /> Pre-Meeting</label> &nbsp;
   <label><input type="radio" name="documents[1]" value="1" /> Post-Meeting</label> &nbsp;
   <label><input type="radio" name="documents[1]" value="2" checked /> Do Not Use</label> &nbsp;
   <a href="#" class="deleteUpload" id="2">Delete</a> &nbsp;
   <a href="/..."><?php echo substr($this->escape($this->objDocRow->doc_title), 0, -4); ?></a>
</li>

尝试将第一行更改为:

jQuery('.deleteLi').on('click', '.deleteUpload', function() {

尝试将第一行更改为:

jQuery('.deleteLi').on('click', '.deleteUpload', function() {

不需要第二个选择器。使用它,jquery将查找.deleteUpload的子类deleteUpload

jQuery('.deleteUpload').on('click', function() {
    var strDocId = jQuery(this).prop('id');
    //if (confirm('Are you sure you want to delete this resource') == true) {
        $.post('/study-clubs/meetings/delete-upload', {strDocId : strDocId},
            function(objData){
                console.log(objData);
            }
        );
        jQuery('li#' + strDocId).remove();
    //}

    return false;
});

不需要第二个选择器。使用它,jquery将查找.deleteUpload的子类deleteUpload

jQuery('.deleteUpload').on('click', function() {
    var strDocId = jQuery(this).prop('id');
    //if (confirm('Are you sure you want to delete this resource') == true) {
        $.post('/study-clubs/meetings/delete-upload', {strDocId : strDocId},
            function(objData){
                console.log(objData);
            }
        );
        jQuery('li#' + strDocId).remove();
    //}

    return false;
});

尝试
jQuery(document).on('click'、'.deleteUpload',function(){
您可以使用.bind()和.unBind()来添加/删除单击处理程序。@ChristopherShall:
on()
是当今附加事件处理程序的新的、更酷的方法。
bind()
很快就会加入类似
live()
;).谢谢,jtheman.我知道我忘记了一些东西.我真的很喜欢.on()@Matt,谢谢你的提醒!试试
jQuery(document).on('click','.deleteUpload',function(){
你可以使用.bind()和.unBind()来添加/删除click处理程序。@ChristopherMarshall:
on()
是当今附加事件处理程序的一种新的、更酷的方式。
bind()
很快就会加入到不推荐使用的方法中,如
live()
;)。谢谢,jtheman。我知道我忘记了一些东西。我真的很喜欢。
bind()@Matt,谢谢你提醒我不要使用它!