IE之动态添加DOM节点触发window.resize事件

IE之动态添加DOM节点触发window.resize事件,第1张

然后页面有几个事件动态地增加DOM元素的,比如点击某个层会在底下列出该层详细内容,这样在FF和chrome下没出现问题,但是在IE6-8下每次都重布局了.

比如我拖动一个层,在拖动过程中层的内容又显示在最底下了,当我放开层的时候这个层就跳回拖动前的位置了...

起先我还没看出来是重布局了...然后演示了N久,挣扎了N久,终于觉得可能是由于动态增加DOM节点导致触发window.resize而使页面重布局了...

最后我不由地在心里喊了句"Thank

godness....",还好改变窗口的高度对页面布局没有影响,不然真要麻烦死了...

复制代码

代码如下:

bindResizeWindow:function(){

var

obj

=

this

$(window).resize(function(){

var

newWidth

=

$(window).width()

if(newWidth

==

obj.windowWidth){return}

obj.initUI()

obj.createUI()

obj.windowWidth

=

newWidth

})

},

只要在绑定方法中判只有宽度改变时才触发重布局事件就行了...

没理解你的提问,你的重点是each还是 *** 作动态添加的DOM?

关于 *** 作动态添加的DOM,需要用delegate或on来进行事件绑定,动态添加的DOM元素也同样绑定了该事件,原理就是事件代理,即事件冒泡。

<div class="container">

    <ul class="list-wrap">

        <li class="item">1</li>

        <li class="item">2</li>

        <li class="item">3</li>   

    </ul>     

</div> $('.container').delegate('.item','click',function(){

    handler()//执行函数

})

3. 如果必须用each来 *** 作,可以使用自定义事件,当添加新DOM之后,trigger('event_name')即可。在绑定自定义事件时的handler执行函数逻辑中使用each即可。只有dom插入页面后,才能获取到该元素

给你的li起个名子name="test"

var items = docment.getElementsByName("test")

遍历这个items

获得单个元素 item.onclick = yourfunction()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11614332.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存