动态的append添加的html代码,他所绑定的事件会失效
后面找到原因:是因为这些动态加载的这些HTML页面是在列表数据页面的HTML元素,css,js代码加载完后,再添加的HTML元素,
在浏览器解析到图一的页面元素时,解析到js的这些绑定标签事件的js代码的时候,这些绑定事件的标签元素还没有生成,
(因为js代码加载完后,才会有这些绑定事件的标签),所以这些JS代码的绑定的事件,根本就没有绑定到这些动态加载的标签上,所以事件不会触发。
解决方法:
$(selector).delegate(childSelector,event,data,function)
参数 |
描述 |
childSelector |
必需。规定要附加事件处理程序的一个或多个子元素。 |
event |
必需。规定附加到元素的一个或多个事件。 由空格分隔多个事件值。必须是有效的事件。 |
data |
可选。规定传递到函数的额外数据。 |
function |
必需。规定当事件发生时运行的函数。 |
但是此项目局限太大,无法这样修改,所以将需要绑定的部分封装成一个函数,待代码添加后再次执行一次,也就是重新绑定事件,但是jquery绑定事件不会覆盖已经有的事件,而是重复添加事件,所以每次添加时间是需要解绑然后在绑定事件
关于jquery的text()方法
例如有这样的html结构
获取每个span里面的文本,我首先想到的是console.log($('.box .title').text())
然而得到的结果虽然是 常规课时连自习,但是这个数组的长度却不是2,而是7,每一个字就是一个数组元素,
text()方法只有准备的定位到元素上才能获取到文本
console.log $('.box .title'))输出后发现是对象数组。
于是这样获取到了文本
console.log($('.box .title')[0].innerHTML)或者这样$('#' + i + ' .title').text()通过精准的获取后,才正常显示了文本。