1

我的页面上有一些div元素。在 maindiv中,当单击链接时,使用 jQuery 通过 AJAX 加载内容。当我单击不在 main 中的链接时,这非常有效div。但是当我有一个div通过 AJAX 加载的主链接时,它们就不起作用了。我不知道为什么。这是一个例子:

我有一个链接。我给了它这个类products,所以 jQuery 知道要加载哪些内容。所以我的链接看起来像这样:

<a href="javascript:;" class="products">products</a> 

我已经放href="javascript:;"了,因为对我来说href="#"不起作用,我需要一个href所以一些 CSS 可以工作。

可能是什么问题?

4

4 回答 4

4

我猜测没有看到您的实际代码,但更多情况下不是这样的问题是因为您在加载时分配处理程序,而不是在将新元素附加到页面click时重新分配它们。div

要解决此问题,请使用委托事件处理程序,如下所示:

$('#parentDiv').on('click', 'a', function() {
    // do your thing in here
});
于 2012-12-24T12:04:12.697 回答
1

好吧,当您放置href="#"时,页面实际上是重新加载的,其中 url 被 # 符号颠倒了。您需要return false在点击事件结束时停止重新加载,一切都会正常工作。否则你也可以这样做href
怎么样,你需要知道我猜它必须像href="javascript:return false;"

于 2012-12-24T12:07:42.613 回答
0

JQuery API 官方建议所有用户使用.live()此案例,

像这样的语法:

$('a.products').live('click',function() {
   // do what you want
});

祝你好运

于 2012-12-24T12:21:40.047 回答
0

.live 的解决方案对我有用。

这是我现在使用的 jquery 代码:

这是我的代码。对不起,我忘了张贴!

    <script>
$(document).ready(function() {
    $('.sofas').live('click',function() {
    $('#content-shown , #pics').animate({opacity:0},250,function() {

    $('.content-loading').fadeIn(250, function() {
    $('#navigation_all , #content-shown').css("height","6600px");
    $('#pics').load('content.html #sofas-bild').animate({opacity:1},250);
    $('#content-shown').load('content.html #sofas', function() {
    $('.content-loading').fadeOut(250, function() {

        $('#content-shown').animate({opacity:1},250);

    });
    });
    });
    });
            });
            });


</script>

在此之前,我得到了 .click(function() { 而不是 .live....

于 2012-12-28T11:32:01.917 回答