jquery无法处理自动生成的DIV

时间:2014-01-01 06:33:27

标签: javascript jquery

我有以下代码,您可以在http://jsfiddle.net/XBfMV/29/

上测试它

HTML:

<div class="sam">div 1</div>
<div class="sam">div 2</div>
<div class="sam">div 3</div>
<div class="sam">div 4</div>

css:

.expanded{
    border-style:solid;
    border-width:1px;
    border-color:black;
    background-color:yellow;
    min-height:50px;
}

的javascript:

$('.sam').on('click',function(){   

    if ( $(this).hasClass('expanded') ){
        $(this).removeClass('expanded');
    } else {
        $(this).addClass('expanded');

    }

});

$(document).ready(function(){
    //Im just test to write some divs after document ready
    var output = '<div class="sam">div 5</div>';
    $(output).insertAfter('.sam:last').fadeIn('slow');
    var output = '<div class="sam">div 6</div>';
    $(output).insertAfter('.sam:last').fadeIn('slow');
});

运行后点击div1,div2,div3和div 4,它将.expanded类添加/删除到div但是当点击由java生成的div5和div6并打印到文档时它不会添加/当我点击它们时,从它们中删除它。

任何解决方案?

3 个答案:

答案 0 :(得分:2)

将选择器添加到on功能。

写:

$(document).on('click', '.sam', function () {
    if ($(this).hasClass('expanded')) {
        $(this).removeClass('expanded');
    } else {
        $(this).addClass('expanded');
    }
});

Updated fiddle here.

Refer syntax.

答案 1 :(得分:2)

使用

$(document).on('click','.sam',function(){   

因为您是以动态方式点击。

答案 2 :(得分:2)

.on()仅绑定已存在的元素,除非您委派操作。

这样的事情会起作用:

$('body').on('click', '.sam', function() {
    // your code here
}