使用Active Social for DotNetNuke更改选项卡后的jQuery重新绑定

时间:2012-05-23 19:25:57

标签: jquery ajax dotnetnuke

我正在使用第三方标签控件,它是名为Active Social的DotNetnuke模块的一部分,我没有任何文档。问题是,当我更改标签时,我丢失了一个js(masonry.js),它对选项卡中加载的内容进行样式设置。我需要重新绑定脚本但是没有成功

这是我到目前为止所拥有的。

我正在使用我在以前的项目中使用的重新绑定方法

function BindControlEvents() {
        //jQuery is wrapped in BindEvents function so it can be re-bound after each callback.
        var $container = $('.addMasonry');
        $container.imagesLoaded(function () {
            $container.masonry({
                itemSelector: '.explore-image',
                columnWidth: 10,
                isFitWidth: true
            });

        });

    }
    //Initial bind
    $(document).ready(function () {
        BindControlEvents();
    });

//重新绑定回调         var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function () {
        BindControlEvents();
    });

但是更改选项卡时不会重新绑定。所以我在页面上创建了一个按钮

 <li><a onclick="BindControlEvents();" href="#">re-bind</a></li>

更改标签后单击此按钮将重新绑定我的脚本。

我假设的下一步是找到告诉我标签已完成加载的事件,但到目前为止我一直没有成功

我尝试选择tab容器并在.load()和.ajaxComplete()上运行BindControlEvents函数,但仍然没有成功。

是否有其他方法可以找出标签何时完全加载。我知道我可能没有太多的工作,但这是我所知道的。

感谢您的帮助

标记

1 个答案:

答案 0 :(得分:0)

也许有一个部分回发没有被拦截,尝试在你的js中添加以下内容,在jquery init之外:

    <script type="text/javascript">
    Sys.Application.add_load(BindControlEvents);

    function BindControlEvents() {
    [...]
    </script>

希望这有帮助, 人