2016-07-24 102 views
-1

使用jquery動態創建鏈接列表,並希望將分開的click事件綁定到它們中的每一個。JQuery動態創建元素並單擊事件

for (var i = 0; i < 7; i++) { 
 
    var li = $('<div>').addClass('text-primary').css("curser", "pointer").appendTo($("#AK_test")); 
 
    var aleg = $('<a>').addClass('pull-left text-primary').css('color','#337ab7').text(" Clickable link # " + i); 
 

 
    aleg.on("click", function() { 
 
     alert("clicked # " + i); 
 
    }); 
 
    aleg.appendTo(li); 
 
    $('<br>').appendTo(li); 
 
}
<div id="AK_test"></div> 
 
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js?ver=4.1'></script>

在此示例警報總是顯示7(ⅰ的最後一個值)。

我的問題:爲什麼?對於每個鏈接,它應該在alert中顯示單獨的i值。

+0

歡迎堆棧溢出!你的問題的全部內容必須在**你的問題中**,而不僅僅是鏈接。鏈接腐爛,使問題及其答案在未來的人們中毫無用處,人們不應該離開現場去幫助你。在**問題中放置一個[mcve] **,最好使用Stack Snippets('<>'工具欄按鈕)使其可運行。更多:[*我如何提出一個好問題?](/ help/how-to-ask) –

+2

從您的描述來看,這可能是[* JavaScript閉合內部循環 - 簡單實用示例* //stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example)。 –

回答

0

感謝T.J. Crowder,尋找最初的解決方案。

這裏是相同的修復程序 - 我的問題代碼在這個question-

for (var i = 0; i < 7; i++) { 
     var li = $('<div>').appendTo($("#AK_test")); 
     var aleg = $('<a>').css('color','#337ab7').text(" link # " + i); 

     aleg.on("click", createClickEvent(i)); 
     aleg.appendTo(li); 
     $('<br>').appendTo(li); 
    } 
    function createClickEvent(i) { 
     return function() { alert(i); }; 
    } 
    <div id="AK_test"></div>