我的问题是我不确定如何使用.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?
谢谢。
答案 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中使用。