1

我的问题是我不确定如何在以下情况下使用 .delegate:

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


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

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

now when an option is selected the following code runs


$(document).ready(function() {

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

});

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

在这种情况下,我将如何使用 .delegate() on 作为 .live 的替代品?

谢谢你。

4

2 回答 2

2

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


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

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

于 2010-09-29T23:23:18.967 回答
1

不要忘记将委托写在一个$(function() {});块中或$(document).ready(function() {});

否则它在 IE 7-9 中不起作用。

于 2012-03-05T12:18:44.813 回答