【问题标题】:jQuery 1.4.2 Using .delegate() on a change event for a doropdown listjQuery 1.4.2 在更改事件上使用 .delegate() 来获取下拉列表
【发布时间】:2011-04-05 01:05:49
【问题描述】:

我的问题是我不确定如何在以下场景中使用 .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() on 替代 .live?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-12
        • 1970-01-01
        • 2015-07-04
        相关资源
        最近更新 更多