2016-07-14 87 views
0

我有一个div,当按下时添加另一个div与同一类。但是当我点击动态添加的元素时,没有任何反应。点击动态添加元素什么都不做

$('.container').on('click', function(){ 
 
    var newColumn = $('<li class="column"/>'); 
 
    var newState = $('<div class="container" unselectable="on">Nothing</div>'); 
 
    newState.appendTo(newColumn); 
 
    newColumn.appendTo($('#canvas')); 
 
});
.container{ 
 
    border:1px solid black; 
 
    width:100px; 
 
    height:40px; 
 
    text-align:center; 
 
    vertical-align:middle; 
 
    line-height:40px; 
 
    border-radius:10px; 
 
    
 
    -webkit-user-select: none; /* Chrome/Safari */   
 
    -moz-user-select: none; /* Firefox */ 
 
    -ms-user-select: none; /* IE10+ */ 
 
} 
 

 
.column{ 
 
    list-style-type: none; 
 
    display:inline; 
 
    width:100px; 
 
    float:left; 
 
    margin:10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="canvas"> 
 
    <li class="column"> 
 
    <div class="container" unselectable="on"> 
 
     works 
 
    </div> 
 
    </li> 
 
</ul>

我怎样才能让所有的元素点击事件的工作?

+0

使用委托的事件:https://learn.jquery.com/events/event-delegation/ – myfunkyside

回答

5

由于.container元素通过脚本自动创建的,你必须使用事件代表团on()应对新的DOM:

$('body').on('click', '.container', function(){ 
    //Your code here 
}); 

希望这有助于。


$(document).on('click', '.container', function(){ 
 
    var newColumn = $('<li class="column"/>'); 
 
    var newState = $('<div class="container" unselectable="on">Nothing</div>'); 
 
    newState.appendTo(newColumn); 
 
    newColumn.appendTo($('#canvas')); 
 
});
.container{ 
 
    border:1px solid black; 
 
    width:100px; 
 
    height:40px; 
 
    text-align:center; 
 
    vertical-align:middle; 
 
    line-height:40px; 
 
    border-radius:10px; 
 
    
 
    -webkit-user-select: none; /* Chrome/Safari */   
 
    -moz-user-select: none; /* Firefox */ 
 
    -ms-user-select: none; /* IE10+ */ 
 
} 
 

 
.column{ 
 
    list-style-type: none; 
 
    display:inline; 
 
    width:100px; 
 
    float:left; 
 
    margin:10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="canvas"> 
 
    <li class="column"> 
 
    <div class="container" unselectable="on"> 
 
     works 
 
    </div> 
 
    </li> 
 
</ul>