在jQuery加载后重新声明函数的必要性

时间:2012-11-21 21:22:50

标签: jquery

我遇到了jQuery load()的问题。这是我的代码:

    $('nav#pagination ul li a').live('click', function() {

        var url = $(this).attr('href');

        $(this).parent('li').parent('ul').parent('nav').fadeOut('fast',function() {
            $(this).load(url + ' nav#pagination > *', function() {
                $(this).fadeIn();
            })
        })

        return false;
    })

HTML:

<div class="block" id="onShelf">
        <header class="prefix_1">
            <h2>Na półce</h2>
        </header>
        <div class="inner prefix_1 suffix_1">
            ## normal text ##
            <div class="clear"></div>
            <nav id="pagination" class="clearfix">
                <ul>
                <li><b>1</b></li>
                <li><a href="/page/8"5px;">2</a></li>
                <li><a href="/page/16"5px;">3</a></li>
                <li><a href="/page/24"5px;">4</a></li>
                <li><a href="/page/32"5px;">5</a></li>
                <li><a href="/page/40"5px;">6</a></li>
                <li><a href="/page/8"5px;">→</a></li>
                </ul>
            </nav>
        </div>
    </div>

当我点击其中一个链接时,它可以工作,但只有一次。它不再起作用,并且不会在加载的内容中加载任何脚本。我必须在加载后重新声明里面的每个函数。我该怎么做才能省略这个,好的,不优雅的解决方案?

我尝试了liveclickdelegatebind

1 个答案:

答案 0 :(得分:0)

尝试使用类似

的内容
$(body).on('click', 'nav#pagination ul li a', function () {
    your code here
});

您可以使用任何不可刷新的元素而不是body