2011-08-19 90 views
2

我想了解如何在jQuery中使用綁定。如何使用bind()而不是live()?

我有一個網頁,其中,一按下按鈕後,將執行以下代碼:

var html = []; 
html.push('<select name="weddingturn" id="weddingturn">'); 
var a = firstweddingturn; 
var b = Number(firstweddingturn) + 16; 
while (a < b) { 
    // do some code 
    html.push('<option name="asdf">' + a + '</option>'); 
    a++; 
} // end while 
html.push('</select>'); 
$('#div1').append(html.join('')); 

我也想趕上到選擇的任何變化,一旦成立。

var firstweddingturn = '400'; 

$('#weddingturn').live('change',function() { 

    alert ("Wedding select change triggered!"); 

    //var wedturn = $('#weddingturnselectid').val(); 
    //$('#div3').append('<br>Wedding turn selected, ' + wedturn + '</br>') 

}); 

我非常感謝有人展示並解釋瞭如何在此代替live()使用bind()。

爲背景的緣故,請看這裏:jquery created select, and triggering on change

+1

這是一篇很好的文章,我遇到了bind,live和delegate http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/ – bittersweetryan

+0

'live'就是綁定'綁定到* future *元素的附加好處,這些元素匹配活動綁定的* selector *。另外,請記住一個ID **必須是唯一的頁面; '$(「#id」)'只會返回一個匹配的元素(就像'document.getElementById(「id」)')一樣。 –

回答

2

只是交換:

$('#weddingturn').live('change',function() { 

到:

$('#weddingturn').bind('change',function() { 

.live應該已經解決您的問題 - 究竟什麼是確切的原因或者你遇到的問題?

2

還爲bind()的特定事件的簡寫。你可以讓你的代碼更短做:

$('#weddingturn').change(function() { 

請記住儘管這bind()live()做完全不同的事情。 live()會影響給定選擇器的所有內容,而bind()只會將事件綁定到頁面上已存在的元素。

1

我認爲這取決於您何時調用live或bind - 之前或之前可用的html元素。如果在該頁面上可用的html元素可用後調用綁定,則應該可以交換。否則,我認爲綁定不起作用。

相關問題