ajax加载后的jquery .each

时间:2014-02-14 16:42:34

标签: jquery ajax

我有几个带有“revstory”类的div,还有更多带有ajax的div。 prolem是,当ajax加载时,加载的div不受jquery脚本的影响。

我也尝试在ajax文件中添加脚本。 该功能可以工作2次。

我已经使用了ajaxComplete现在它可以工作很多次了! 我已经尝试了一段时间了。希望有人能指导我找到正确的解决方案。 提前致谢

<div id=#review class="revstory less">
</div>

JavaScript的:

function sf() {

    var less = '60px';
    var more = '300px';
    $('.revstory').each(function () {
        var rev = $(this);
        var h = this.scrollHeight;
        console.log(h);

        if (h > 70) {

            rev.css('height', less);
            rev.addClass("less");
            var l = rev.text();

            rev.text(l.substr(0, 155) + '..');

            // rev.after('<a id="more" class="item" href="#">Read more</a><br/>');
            // var link = rev.next();
        }


        rev.on('click', function () {

            if (rev.hasClass("less")) {
                rev.animate({
                    'height': h
                });
                rev.text(l.substr(0, 555));
                rev.removeClass("less");
            } else {
                rev.addClass("less");
                rev.animate({
                    'height': less
                });
                rev.text(l.substr(0, 155) + '..');
            }
            // rev.css('height', h);

            // alert(rev.attr('id'));
        });

    });
}

2 个答案:

答案 0 :(得分:0)

在函数内声明事件处理程序是不常见的。尝试将rev.on('click'移出sf()函数并将其替换为$(document).on('click', '.revstory'

$(document).on('click', '.revstory', function() {
    var rev = $(this);                          // add this line, too
    if (rev.hasClass("less")) {
        rev.animate({
            'height': h
        });
        rev.text(l.substr(0, 555));
        rev.removeClass("less");
    } else {
        rev.addClass("less");
        rev.animate({
            'height': less
        });
        rev.text(rev.text().substr(0, 155) + '..'); // also update this
    }
    // rev.css('height', h);
    // alert(rev.attr('id'));
});

function sf() {    
    var less = '60px';
    var more = '300px';
    $('.revstory').each(function () {
        var rev = $(this);
        var h = this.scrollHeight;
        console.log(h);

        if (h > 70) {
            rev.css('height', less);
            rev.addClass("less");
            var l = rev.text();
            rev.text(l.substr(0, 155) + '..');
            // rev.after('<a id="more" class="item" href="#">Read more</a><br/>');
            // var link = rev.next();
        }
    });
}

答案 1 :(得分:-1)

我认为你改变了这一行:

rev.on('click',function(){

要:

rev.live('click',function(){

也许这可以起作用