2012-11-14 60 views
0

假設我們正在做一個待辦事項列表,每當最後一個列表項被點擊時,我如何附加一個新的列表項。 在下面的示例代碼中,第四個列表項保留了單擊事件,但我希望每次都在最後一個列表項上。如果最後一個子元素髮生更改,如何將點擊事件綁定到最後一個子元素?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js" type="text/javascript"></script> 

<ul id="foo"> 
<li><input placeholder="One"></input></li> 
<li><input placeholder="Two"></input></li> 
<li><input placeholder="Three"></input></li> 
<li><input placeholder="Click Me Add More"></input></li> 
</ul> 

<script> 
    $('#foo li:last-child').bind("click", function(){ 
     var li = $(this).clone(); 
     $('#foo').append(li); 
    }) 
</script> 

回答

1

的jQuery 1.7+,使用此:

http://jsfiddle.net/NeQ5q/

$('#foo').on("click","li:last-child", function(){ 
     var li = $(this).off('click').clone(); 
     $('#foo').append(li); 
    })​ 
0

我試圖綁定,而不是活

$('#foo li:last-child').live("click", function(){ 
    var li = $(this).clone(); 
    $('#foo').append(li); 
}) 
+1

的jQuery 1.7+,使用。對(),而不是 –

1

試試這個

$('#foo li:last-child').bind("click", function(){ 
     var li = $(this).clone(true); 
     $('#foo li:last-child').unbind("click"); 
     $('#foo').append(li); 
    })​ 

而是使用.on().off()

$('#foo li:last-child').on("click", function(){ 
     var li = $(this).clone(true); 
     $('#foo li:last-child').off("click"); 
     $('#foo').append(li); 
})​ 

Check Fiddle

相關問題