jQuery on()方法绑定动态元素的点击事件无响应的解决办法
生活随笔
收集整理的這篇文章主要介紹了
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
$('#check_all').on('click' , function(){
alert(1);
});
$("#yujinlist").append(html);
count++;
}
<script> // 先綁定事件再添加div $('#test .evt').on('click', function() {alert($(this).text())}); $('#test').append('<div class="evt">evt2</div>'); </script> 正確的用法如下:
以上代碼執(zhí)行時,點擊#check_all時,alert一直沒反應(yīng),后在網(wǎng)上查資料時,才知道on前面的元素也必須在頁面加載的時候就存在于dom里面, 那原話是這樣的:
支持給動態(tài)元素和屬性綁定事件的是live和on,其中l(wèi)ive在JQUERY 1.7之后就不推薦使用了。現(xiàn)在主要用on,使用on的時候也要注意,on前面的元素也必須在頁面加載的時候就存在于dom里面。動態(tài)的元素或者樣式等,可以放在on的第二個參數(shù)里面。
因為我先輸出相關(guān)html,再執(zhí)行就沒問題了。
<div class="row">\ <div class="col-xs-12">\ <div class="control-group">\ <label class="control-label bolder blue">選擇鎮(zhèn)街</label>\ <div class="row">\ <div class="checkbox col-xs-1">\ <label>\ <input type="checkbox" class="checkbox" id="check_all" />\ <span class="lbl">全區(qū)</span>\ </label>\ </div>\ <div id="check_item">\ <div class="checkbox col-xs-1 ">\ <label>\ <input name="towm'+count+'" type="checkbox" class="checkbox" />\ <span class="lbl">西南街道</span>\ </label>\ </div>\ <div class="checkbox col-xs-1 ">\ <label>\ <input name="towm'+count+'" type="checkbox" class="checkbox" />\ <span class="lbl">云東海街道</span>\ </label>\ </div>\ <div class="checkbox col-xs-1">\ <label>\ <input name="towm'+count+'" type="checkbox" class="checkbox" />\ <span class="lbl">白坭鎮(zhèn)</span>\ </label>\ </div>\ <div class="checkbox col-xs-1">\ <label class="block">\ <input name="towm'+count+'" type="checkbox" class="checkbox" />\ <span class="lbl">樂平鎮(zhèn)</span>\ </label>\ </div>\ <div class="checkbox col-xs-1">\ <label class="block">\ <input name="towm'+count+'" type="checkbox" class="checkbox" />\ <span class="lbl">大塘鎮(zhèn)</span>\ </label>\ </div>\ <div class="checkbox col-xs-1">\ <label class="block">\ <input name="towm'+count+'" type="checkbox" class="checkbox" />\ <span class="lbl">蘆苞鎮(zhèn)</span>\ </label>\ </div>\ <div class="checkbox col-xs-1">\ <label class="block">\ <input name="towm'+count+'" type="checkbox" class="checkbox" />\ <span class="lbl">南山鎮(zhèn)</span>\ </label>\ </div>\ </div>\ </div>\ </div>\ </div>\ </div>\ <hr />'; $('#check_all').on('click' , function(){ var that = this; $('#check_item').find('input:checkbox') .each(function(){ alert(2); this.checked = that.checked; $(this).closest('.col-xs-1').toggleClass('selected'); }); });下面看下jquery on() 方法綁定動態(tài)元素
jQuery on()方法是官方推薦的綁定事件的一個方法。使用 on() 方法可以給將來動態(tài)創(chuàng)建的動態(tài)元素綁定指定的事件,例如append等。
<div id="test"> <div class="evt">evt1</div> </div> 錯誤的用法,下面方法只為第一個class 為 evt 的div 綁定了click事件,使用append動態(tài)創(chuàng)建的div則沒有綁定<script> // 先綁定事件再添加div $('#test .evt').on('click', function() {alert($(this).text())}); $('#test').append('<div class="evt">evt2</div>'); </script> 正確的用法如下:
總結(jié)
以上是生活随笔為你收集整理的jQuery on()方法绑定动态元素的点击事件无响应的解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: window.onload和$(docu
- 下一篇: iOS开发-平台使用TestFlight