如何使用bind()而不是live()?

时间:2011-08-19 19:59:54

标签: javascript jquery

我正在尝试了解如何在jquery中使用bind。

我有一个页面,按下按钮后,会执行以下代码:

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>')

});

我非常感谢有人在此展示和解释如何使用bind()而不是live()。

为了上下文,请参阅此处:jquery created select, and triggering on change

4 个答案:

答案 0 :(得分:2)

只需交换:

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

为:

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

.live应该已经解决了您的问题 - 那么您遇到的确切原因或问题是什么?

答案 1 :(得分:2)

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

此网站很好地解释了这些差异:http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/

答案 2 :(得分:2)

对于某些事件,还有绑定()的简写。您可以通过以下方式缩短代码:

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

请注意,虽然bind()live()做了根本不同的事情。 live()会影响给定选择器的所有内容,而bind()只会将事件绑定到页面上已有的元素。

答案 3 :(得分:1)

我认为这取决于你何时调用live或bind - 在那些可用的html元素之前或之前。如果您在该页面上的那些html元素可用之后调用bind,则交换应该可以。否则,我认为bind不起作用。