2013-05-09 37 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; 
}); 
相關問題