4

我有一个包含一些内容的 div。jQuery 扩展器应用于它。一段时间后,div 的内容通过 ajax 调用更改。如何在 jquery .done() 中再次将扩展器应用于 div?

$(document).ready(function(){
    $('div.expandable').expander({
    slicePoint: 200,
    preserveWords: true,
    widow: 4,
    expandText: 'continue reading',
    detailClass: 'expanderDetails',
    afterExpand: function(){
        $('#mybutton').click(); //simulate a different click.
    }
});

div.expandable 的内容由 ajax 请求更改。一旦发生,我将失去“阅读更多”功能。我想在 request.done() 上将扩展器效果应用回 div。如何做到这一点?仅仅运行它是行不通的:

$('div.expandable').expander();
4

1 回答 1

1

首先,您应该将扩展器代码包装到一个函数中:

function initExpander() {
    $('div.expandable').expander({
        slicePoint: 200,
        preserveWords: true,
        widow: 4,
        expandText: 'continue reading',
        detailClass: 'expanderDetails',
        afterExpand: function(){
            $('#mybutton').click(); //simulate a different click.
        }
    });
}

然后你可以在每次需要初始化扩展器时使用这个函数,例如在 DOM 加载之后:

$(document).ready(function() {
    initExpander();
});

或者在 ajax 调用之后:

$.ajax({
    url: '/doajax',
    // .... your ajax request here
    success: function () {
         initExpander();
    }
});

如果您将 done() 与 ajax 一起使用,也可以:

$.ajax({
    url: '/doajax',
    // .... your ajax request here
}).done(function () {
    initExpander();
});

希望这可以帮助 ;)

于 2013-07-04T15:22:25.707 回答