2016-07-14 34 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>