jquery代码在ajax加载的内容中不起作用

时间:2013-08-25 16:54:57

标签: javascript jquery ajax

是的,我在这里看过同样的文章,谷歌帮助了。但我是设计师,而不是编码员。我可以复制\粘贴一些代码,甚至改变一些东西,但这个问题对我来说太难了。

所以,我的主页上有新闻,当你向下滚动时,下一页加载了ajax。有一个脚本,显示每个帖子的\ hides评级栏。但是此代码在加载的内容中不起作用。如果对你不好,请修理它。

P.S。我试着去研究(),或者活着,但是我以前很伤心,不是我的水平。

$(document).ready(function() {

var element = $('#dle-content .main-news');
for (i=0; i<element.length; i++)
    {
        $(element[i]).addClass('news-'+i);
    }

$('#dle-content .main-news').hover(
    function() {
        $('.main-news-hidden').stop(true);
        $(this).find('.main-news-hidden').animate({
            'bottom':'0'
        },400
        );
    }, function() {
        $('.main-news-hidden').stop(true);
        $(this).find('.main-news-hidden').animate({
            'bottom':'-120'
        }, 0);
        $('.main-news-hidden').stop(true);
});

$('.top-news li').hover(
    function() {
        $('.top-news-hidden').stop(true).fadeOut(0);
        $(this).find('.top-news-hidden').animate({
            'opacity':'1'
        },400, function()
            {
                $(this).fadeIn();
            }
        );
    }, function() {
        $('.top-news-hidden').stop(true);
        $(this).find('.top-news-hidden').fadeOut(100);
});

var element2 = $('.top-news li');
for (i=0; i<element2.length; i++)
    {
        $(element2[i]).find('.list').append(i+1);
    }

});

2 个答案:

答案 0 :(得分:4)

尝试将您的代码包含在ajax html数据中,或者您可以在附加html后在done函数中添加脚本。

$.ajax({
  url: "yourUrl",     
}).done(function(data) {
   $("#yourId").html(data);   // Solution 1 :  your content is loaded with ajax, Also this data has your jQuery script
   // Solution 2:  Now start you can call your script via function or add directly here (only html data is needed)
   yourFunction();
   //Solution 3: Now add your jquery code directly
   $(".someClass").click(function(){
     //events
   });
});

这是使用jQuery访问ajax数据的三种不同方法。

答案 1 :(得分:2)

我目前时间不长,但我会尽力而为。

执行.hover()等时,它们将绑定到您提供的实际元素。现在,在事件绑定到DOM元素时,通过AJAX加载的元素不可用。

一种解决方案是已经提供的解决方案。然而,恕我直言更好。您需要的事件通常是“冒泡”,这意味着它们会在DOM树上向上传递。您需要将事件绑定到DOM元素,该元素不会通过AJAX替换/更改,但是是持久的。如果你是有一个容器#content,你的AJAX被加载到其中,你想把这个容器作为事件绑定的基础,因为冒泡。

尝试用

替换$('.someClass').click()
$('#content').on('click', '.someClass', function(event) {
  // your event handling
});