2013-05-09 57 views
0

我试图将点击处理程序添加到通过jQuery添加到DOM的li。我以为这是你所采取的方式:我要删除li当你在a标签点击一类的deleteUpload如何使用jQuery动态地将点击处理程序添加到li

<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('.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; 
}); 

这里是我的标记。我究竟做错了什么?当我点击它时,我被带到页面顶部。我也试过deleteLi而不是deleteUpload在jQuery中,但那也没用。

+1

尝试'jQuery的(文件)。在( '点击', '.deleteUpload',函数(){' – jtheman 2013-05-09 21:21:40

+0

您可以使用.bind()和.unBind()HTTP://api.jquery。 com/bind /添加/删除点击处理程序 – 2013-05-09 21:21:41

+0

@ChristopherMarshall:'on()'是现在附加事件处理函数的新方法,'bind()'很快就会加入已弃用的方法,如'live() )。 – Matt 2013-05-09 21:23:23

回答

2

尝试改变第一行:

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

有没有必要有第二选择。有了它,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; 
}); 
相关问题