在jQuery里面有一个方法live()给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。那有没有方法是给所有匹配的元素附加一个属性或者样式,即使这个元素是以后再添加进来的也有效。
解决方案 »
- jquery ajax 数据问题,windows 窗口问题
- 求救!有一个文本框下边有一个bottom如果文本框没有填值就在bottom左边给一个提示,填的值是大于1小于10000,各位能不能帮一下,这个我不会写!
- 滚动图片为什么只滚动一轮
- 关于jQuery不同文件提示错误问题
- .html静态网页怎么提取session啊?
- 求javascript 防止客户端学习挂机脚本
- 关于动态菜单中层对齐的问题??
- 怎样用JSP或JavaScript获取客户端浏览器的语言设置?
- 准高分求助,在线急等 !
- 高端JS+HTML技术页面游戏《英雄》演示源代码提供下载
- document.body.style.MozUserSelect="none" 在火狐下失效
- javascript传值给servlet出现部分乱码问题
不过你可以通过live变相实现这个功能。
在所有希望匹配的元素上,使用Live绑定函数,函数的处理恰好是this.atrr=value;
这样没新增一个元素若匹配的话,就会触发live绑定,设置新增元素的attr
不过貌似HTML没这个事件。楼主可以自己找找。
或者使用setInteval()不断的监听。效率可能不行了。
或者使用一个常驻事件,如body.onfocus() 效率也不行 貌似
或者使用JS的事件蔓延,这方面我不太懂 估计可以。
当然理想状态下还是找到或者设计一个文档结构改变触发的事件。期待高人!
function test(obj){
alert($(obj).val())//或者其他属性来验证
}
<body>
<div class="clickme">Click here</div>
</body>可以给这个元素绑定一个简单的click事件:
$('.clickme').bind('click', function() {
alert("Bound handler called.");
});当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。
$('body').append('<div class="clickme">Another target</div>');
尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。 .live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:
$('.clickme').live('click', function() {
alert("Live handler called.");
});
然后再添加一个新元素:
$('body').append('<div class="clickme">Another target</div>');
然后再点击新增的元素,他依然能够触发事件处理函数。
------------------------------
关键是,目前的DOM标准,添加元素并不是事件,所以不会触发任何函数。你无从处理。只有自己在添加元素后,手动修改添加后的元素属性。live函数的实现是借助DOM的event bubbling这种机制。