在页面加载之后,我们经常会遇到联动的问题。这个时候就需要在页面加载后就自动触发第一个点击事件这样后面的联动才能在网页中显示出来。
在js当中可以使用
trigger方法
$("selector").trigger("click");
比如在我的代码中我先给这个ul 里面的li 添加了点击事件 然后模拟触发了这个事件。
$(".place-classify ul").on("click","li",function(){
var placeName = $(this).html();
createPlaceContent(placeName) ;
});
$(".place-classify ul li:first-child").trigger('click');
但有的时候模拟事件并没有触发一般可能遇到两个问题:
模拟点击事件写在了点击事件的前面。
有的人认为这个是在页面加载后才触发的尤其是写在$(function(){});
当中就是先渲染在触发,但是一个页面打开先渲染的是整个页面的元素,而不是js代码,js代码还是会一条条的往下执行,那么把模拟点击写在前面的话就是先触发再声明,所以没有效果,把他移到点击事件的后面就可以了。已经把点击事件移到了后面但还是没有触发,那么可能是异步加载的原因,由于你的网页是异步加载那么由于数据还没有处理完你就发生了点击事件,同样的道理,动态生成的元素都还没有生成,就触发了点击事件。办法就是把ajax请求改为同步请求。
$.ajax({
url:url,
data:data,
async:false,
success:function(result){
handle(result);
},
error:function(result){
alert("获取数据失败");
}
});