1.动态加载元素绑定点击响应无反应
原因:由于添加内容的新dom产生之前js就加载完了,事件当然就没有绑定到新载入的dom上。
解决办法:
`` $(elems).on(events, selector, data, fn); //利用on事件绑定父元素,再通过selector获取指定标签
示例:
为评论区每个评论的回复按钮添加响应事件,由于评论是动态加载的,所以直接用click响应事件会无反应,但若直接调用on绑定指定元素的点击事件如:
$("#re>a").on("click",function(){});
点击事件也会无响应。解决办法就是绑定父元素,再选择父元素下的子元素。最好绑定body,或者document。如:
$(document).on("click","#rep>a",function(){});
2.页面多个相同元素,如何获取我们点击的元素及元素下的子元素?
如上图页面,我将每一条评论定义为一个msg-list-item。随着评论数的增多,如何获取我们选定的item下的“回复”标签。
**解决方法:**利用index索引,获取我们点击元素的索引值。在利用过滤选择器eq()就可以得到是第几个item。最后利用筛选选择器children(selector)或者find(selector)获取子元素。如:
$(document).on("click","#rep>a",function(){
var i = $('#rep>a').index(this); //一定要加上this,选定我们点击的元素
$(".msg>.msg-list-item").eq(i).find(".reply-box").toggle();
});