2011-10-09 26 views
1

嗨,我的live()函數不起作用。 我想通過點擊ulAllApps裏面的li元素來添加一個帶有點擊功能的mew li元素。在ulMyApps中創建一個新的li元素,但沒有點擊功能。jQuery Live()不起作用

HTML:

<div class="MyApps" > 
    <ul class="ulMyApps"> 
     <li class="MYLinkTR">app1</li> 
    </ul>  
</div> 
<div class="AllApps"> 
    <ul class="ulAllApps"> 
     <li class="IECLinkTR">app1</li> 
     <li class="IECLinkTR">app2</li> 
    </ul> 
</div> 

jQuery代碼:

$(document).ready(function() { 

$(".IECLinkTR").click(function() { 
    var tmp = $(this).html(); 
    $.ajax({ 
     type: "POST", 
     url: window.location.href+"/addToMyLinks", 
     data: "{'app': '" + tmp + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      $(".ulMyApps").append("<li class=\"MYLinkTR\">"+ tmp +"</li>"); 
     }, 
     error: function (msg) { 
      alert("You have already have that app");     
     } 
    }); 
}); 

$(".MYLinkTR").live('click', function() { 
    var tmp = $(this); 
    $.ajax({ 
     type: "POST", 
     url: window.location.href + "/removeFromMyLinks", 
     data: "{'app': '" + $(this).html() + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      tmp.closest('li').remove(); 
     }, 
     error: function (msg) { 
     } 
    }); 
}); 
}); 

某種原因而動態創建新的li元素不具有實時功能來的點擊功能......

+0

你得到任何錯誤,請檢查錯誤控制檯 – punit

回答

0

我只能看到在你的MYLinkTR點擊函數中,你試圖刪除tmp.closest('li')。現在看看我認爲最接近的文檔是向上尋找最接近的下一個('li'),而不是它所在的那個。你確定你不想要tmp.remove()嗎?

也許看到是否先點擊一個警報,看看它是否正在觸發,因爲你沒有對錯誤做任何事情。有些事情可能發生在你不知道的地方。其他選項是改變LIVE委派和附加這UL和看看是否觸發

$('ul.MyApps').delegate('li', 'click', function(e){ 
     alert('does this at least fire'); 
    }); 
+0

我同意,這應該是tmp.remove()。 –

相關問題