2011-08-19 53 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元素可用后调用绑定,则应该可以交换。否则,我认为绑定不起作用。

相关问题