IE 7无法使用.load()将事件(使用.live())绑定到动态创建的元素

时间:2010-04-14 14:38:25

标签: jquery load live

我无法让IE7将点击事件绑定到使用.load()添加到DOM的元素。这是一些代码:

$('.mybtn').live('click', function(e){
    e.preventDefault();
    $('#mypage').load('load-this-page.htm');
});

这是html

<div id="mypage">
   <a href="#" class="mybtn">clickme</a>
   // stuff goes here
</div>

在页面加载时,单击可以正常工作,但是一旦通过clickme链接加载div,单击将停止在IE7中工作。 clickme链接在加载div内,也在load()加载的html文件中,这就是我使用live()的原因。

此代码适用于FF 3.6,fyi。

任何人都知道发生了什么事(除了IE吸球之外)?谢谢!

编辑:这是加载到div中的内容

<ul>
    <li>
        <a href="02-01-2010" id="prev-month" class="mybtn"></a>
    </li>
    <li>
        <h3>March 2010</h3>
    </li>
    <li>
        <a href="04-01-2010" id="next-month" class="mybtn"></a>
    </li>
</ul>

<a href="#">link 1</a>
<a href="#">link 2</a>
<a href="#">link 3</a>
<a href="#">link 4</a>

4 个答案:

答案 0 :(得分:1)

试试这个:

$('#mypage').load('load-this-page.htm #DivOrWrapper');

答案 1 :(得分:0)

API documentation,您正在加载的页面(“load-this-page.htm”)不能是完整的HTML文档,即它不能包含<html>,{{1 }}或<title>元素,否则无法保证跨浏览器兼容性。

答案 2 :(得分:0)

可能这是由于IE浏览器的限制。以下是jQuery Docs的引用:

由于浏览器安全限制,大多数“Ajax”请求都受same origin policy的约束;请求无法成功从其他域,子域或协议中检索数据。

这意味着您无法执行$ load:

答案 3 :(得分:0)

试试这个:

var fn = function(e) {

    e.preventDefault();
    $('#mypage')
        .load('load-this-page.htm')
        .find('.mybtn')
        .click(fn);
};

$('.mybtn').live('click', fn);