我已通读 .on 文档,但其中有一个错误
这是HTML:
<a href="#" class="add-new">make new row</a>
<ul>
<li class="opts" >
<select class="change" href="#" data-row="1">
<option>a</option>
<option>b</option>
<option>c</option>
</select>
</li>
</ul>
这是javascript:
var index = 2;
$('.add-new').on('click',function(e) {
e.preventDefault();
$('.opts:first').clone(true).insertAfter('.opts:last');
$('.opts:last select').attr("data-row", index);
index++;
});
$(document).on('click', '.change', function(e) {
e.preventDefault();
console.log($(this).data('row'));
});
如果我动态生成行,则新元素将与 .on 事件一起使用。
但是,如果第一个元素被更改并添加了更多新元素,则新的新元素会触发该事件。
现在他们表现得好像他们是第一个元素。
这是一个示例: http: //jsfiddle.net/BgAsY/2/
添加一或两行,然后更改除第一个选择之外的任何内容。
更改时,控制台会显示正确的相应数字。
现在再添加几行并更改这些新选择。
一切都还好,但现在更改第一个选择,添加更多行,然后更改那些最新的选择。
控制台现在总是显示 1,就像它认为那些最新的行是第一行一样。
我在这里想念什么?