jq动态生成HTML元素时,点击事件无效,且css无效 及数据获取
解决方案:将普通事件改为.on()委托事件
示例:
$('.btn1').click(function(){ //code }) //普通绑定事件
$(document).on('click','.btn1',function(){//code }) //on绑定事件
原因:动态添加的HTML元素是在CSS,JS代码加载完成后再添加的HTML页面。在浏览器解析这些通过ajax请求到后台
返回的数据,再根据返回的结果动态生成HTML页面时,这些绑定事件的标签元素还没有生成。而普通.click事件只能绑定
静态元素。用on方法支持动态绑定元素。
CSS无效解决办法:
<div class="box"> <input type="text" name="" value="已经存在的input"> </div> <button>添加input</button>
.box{ width: 500px; height: 300px; border-radius:8px; border:1px solid #f0f; margin-bottom: 20px; padding: 5%; } .box input{ border:0px; background: skyblue; color: #fff; height: 35px; border-radius: 8px; }
var box = $('.box'); var appendHtml = '<input type="text" name="" value="追加的input">'; box.append(appendHtml); // 解决样式不生效 $(".box").trigger("create");
动态生成的元素数据获取方法:callback
注意直接这样获取是没有效果的:
var pageCount = $('.pagination li').eq(0).find('span').eq(0).html();
正确方法,采用callback的方式,如下:
function SearchNotesAdd(key) { //var pageCount = $('.pagination li').eq(0).find('span').eq(0).html(); //异步动态生成的元素用callback方法获取数据 getPageCount(function (data) { $.ajax({ type: 'POST', url: '../Ashx/SearchNotesAdd.ashx', data: { key: key, pageCount: data }, success: function (msg) { } }); }); } function getPageCount(callback) { setTimeout(function () { var pageCount = $('.pagination li').eq(0).find('span').eq(0).html(); callback(pageCount); },1000); }

浙公网安备 33010602011771号