原因很简单,因为你还没有没有“刷新”!
例如,本来的页面是↓
>下面的例子对新增的节点不能实现隐藏,而对本来已存在的节点是可以实现隐藏事件的=>>>新增一个“点我隐藏”</button><script>$(“button”).click(function(){$(“div”).append(‘<p>点我隐藏</p>’);});$(“p”).click(function(){$(this).hide();});>
你不妨试试复制来运行看看,新增的节点的确是不能实现隐藏事件,即便已经有了$(this).hide()的定义。
如果你有接触过jQuery Mobile,你肯定也知道,Ajax动态加载的列表等,都需要refresh一下才能显示效果。
这里也是类似的道理。
当页面加载完成后,,hide()事件就仅仅绑定当前在document里面存在的<p>节点,而对于新增的节点,肯定是没有绑定的啦。。。
所以我们就需要“刷新”。这个“刷新”显然不是按F5啦,而是对当前页面里存在的(包括刚才新增的节点)进行重新绑定。
方法很简单,用的是bind()。
下面就是可以正常实现功能的代码↓
>下面的例子对新增的节点也能实现隐藏=>>>新增一个“点我隐藏”</button><script>$(“button”).click(function(){$(“div”).append(‘<p>点我隐藏</p>’);refresh();//调用下面自定义的refresh函数});$(“p”).click(function(){$(this).hide();});{$(“p”).bind(‘click’,function(){$(this).hide();});}>
是不是觉得好好玩呢?哈哈~~~
所有的失败,与失去自己的失败比起来,更是微不足道