jQuery 1.4.2对下拉列表的更改事件使用.delegate()

时间:2010-08-27 22:09:24

标签: internet-explorer-8 internet-explorer-7 jquery jquery-1.4

我的问题是我不确定如何使用.delegate来实现以下场景:

我们的应用程序有一个投票系统,可以添加几个轮次或步骤。每次添加新步骤时,都会有一个选项列表,用于定义如何赢得回合/步骤。


<select class="listOfOptions">
<option value="U">Unanimous</option>

<option value="M">Majority</option>
<option value="C" class="customOption"># of votes…</option>
</select>

现在当选择一个选项时,以下代码运行


$(document).ready(function() {

  $('.listOfOptions').live('change', function() {
    if ($(this).find(':selected').attr('class') == 'customOption') {
      // DO SOMETHING!!
    }
    else {
      // DO SOMETHING ELSE
    }
  });

});

此代码在IE以外的所有其他浏览器上运行完美。

在这种情况下,如何使用.delegate()代替.live?

谢谢。

2 个答案:

答案 0 :(得分:2)

对于这种特殊情况,这将是与.delegate()一起使用的语法。请注意,'listOfOptions'是下拉列表的类。


$('body').delegate('.listOfOptions', 'change', function() {
    if ($(this).find(':selected').attr('class') == 'customOption') {
      // DO SOMETHING!!    
    }
    else {
      // DO SOMETHING ELSE      
    }
  });

它在所有浏览器中都像魅力一样。

答案 1 :(得分:1)

不要忘记在$(function() {});区块或$(document).ready(function() {});

中编写委托

否则将无法在IE 7-9中使用。