扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
换成ID试试,select name = "test" id= "test" option value="1" 1/option/select $(document).ready(function () { $("#test").change(function(){ $(this).css("background-color","#FFFFCC"); }); });
创新互联公司拥有十年成都网站建设工作经验,为各大企业提供成都网站制作、做网站、外贸营销网站建设服务,对于网页设计、PC网站建设(电脑版网站建设)、app开发定制、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、申请域名等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。
并不是事件没有绑定上,是因为点击li的时候先触发了ul的隐藏事件,ul已经被隐藏了所以点击事件无效。
如果把隐藏事件延迟一些就能正常触发点击事件了:
$('.js-search-select1').focusout(function () {
setTimeout(function () {
$('.js-ul-helper').css('visibility', 'hidden');
}, 1000);
});
但建议还是把隐藏修改到点击事件内触发。
如果第一次点击无效 就出现在你第一句值的判断上了,
你如果要判断值是否和默认的值一样 不要在程序里自己手动设置,而让它直接读取:
var defaultHtml=$(this).html();
然后你程序里和这个defaultHtml的值来比较。
因为你的第二句,值是在程序里设置的,所以在程序里进行比较的时候不会出错,
但你第一句,你是用读取到的值和你手动设置的值进去比较,容易出现多个空格 或少个空格 什么的情况,所以才会比较不出来。
这就是“为未来元素添加事件”的方法了,
jquery里为未来元素添加事件的原理很简单,既然这个元素是未来的,那么我们可以把事件绑定在已经存在的元素上,然后在发生点击的时候,再来判断所点击的对象,是否为我们要的对象,然后再触发事件。
$("div#id").on("click","button.do",function(){
//具体的内容
});
上面这段代码解释起来就是,给div#id绑定一个click事件,并且触发事件的对象为button.do时,开始执行具体的内容。
不管button.do是否为已经存在的,还是未来添加的,都能执行。
对于你的问题,同理就能解决,
$("input[type='checkbox']").click
你的这句,把事件绑定到最近的父元素里,不要绑在离“太远”的父元素上,影响代码的执行效率,
好像确实不行锕。
我这曲线了一下:先给绑定个自定义的checkImg事件,并且触发。
但是每次动态新增img之后 要手动触发下这个img的checkImg事件。
咱可交流一下。
$(function() {
$("body").on("checkImg","img", function(){
$(this).error(function(){
$(this).after("spanload error/span")
});
}).children("img").trigger("checkImg");
//动态新增个img 然后触发他的事件
$("div").append('img src="charts/uptotops.png"/').children("img").trigger("checkImg");
});
$('.class').on("click",function(){……});相当于$('.class').bind("click",function(){……});
$(document).on("click",'.class',function(){……});相当于$('.class').live("click",function(){……});
js生成的元素绑定事件必须使用live,但新版的jq,已经淘汰了live,可以用on方法代替,但必须注意写法。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流