重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的jq代码应该写入ready事件内:
创新互联公司专注于柳州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供柳州营销型网站建设,柳州网站制作、柳州网页设计、柳州网站官网定制、成都小程序开发服务,打造柳州网络公司原创品牌,更为您提供柳州网站排名全网营销落地服务。
$(function(){
var q = 0;
$("#a1 ul li").mouseover(function() {
$(this).addClass("ys").siblings("#a1 ul li").removeClass("ys");
q = $(this).index();
$("#a1 img").eq(q).fadeIn().siblings("#a1 img").fadeOut();
});
//....其他代码这里略
})
如果不这样,直接就用 $("#a1 ul li").mous... ,当网页运行到这里时,Dom结构很可能还未加载完毕呢,浏览器会认为$("#a1 ul li")这个对象不存在,就直接跳过去了,所以这个鼠标事件就失效了,其他也一样的道理。而计时器是延迟一段时间才执行的,这时候整个页面肯定早就加载完毕啦,所以它能跑起来。
jquery里有个一次性的事件处理方法:one(eventType,fn)。
具体可以这样做:
$(function(){
$("#s1").one("click",showDIV(1));
});
jquery还有一个解除事件委派的方法:unbind([eventType])。参数是可选的,如果不选,则表示移除节点所有已绑定事件。
这里你只需要解除click事件,可以用$("#s1").unbind("click")来处理。
DOM树被改动,或者元素被移动,有可能使绑定了的事件失效。
这种情况你可以在激活事件之前,对你操作的元素进行验证,确认其元素是否你的目标元素。例如使用console.log