jQuery .on委托不工作

时间:2013-09-04 02:08:21

标签: javascript jquery

我创建了一个简单的代码,但似乎.on委托不起作用?请帮帮忙?

HTML:

<input type="button" value="Click Me!" id="button0" class=".button" />
<br/><input type="button" value="Add" id="add_button" />
<script>
    var idx = 1;
    $(document).ready(function(){
        $(document.body).on('click',".button",function(){
            alert(this.id);
        });
        $('#add_button').on('click',function(){
            $('<input type="button" value="Click Me!" class=".button" />')
                .attr('id','button' + idx++)
                .insertBefore($(this).prev());
        });
    });
</script>

“点击我!”按钮应该提醒按钮的ID属性,而添加按钮应该添加另一个“Click Me!”具有不同ID属性值的按钮。 http://jsfiddle.net/SrwrK/

请注意我正在尝试使用jQuery的.live()方法解决方法,因为它已被弃用并从1.9中删除。

1 个答案:

答案 0 :(得分:3)

<input type="button" value="Click Me!" id="button0" class=".button" />

此代码不正确 - 删除“。”从按钮类前面。类名仅获得“。”在CSS选择器中,如CSS文件或jQuery选择器语句。

<input type="button" value="Click Me!" id="button0" class="button" />

这会奏效。使用jQuery生成的按钮具有相同的问题,因此请将其显示为:

$('<input type="button" value="Click Me!" class="button" />')

你甚至可以将它简化得更像:

$('<input type="button" value="Click Me!" class="button" id="button' + idx++ + '" />')

这将让你跳过.attr()方法。

这是一个有效的JSfiddle:http://jsfiddle.net/SrwrK/1/