代码之家  ›  专栏  ›  技术社区  ›  Jeff Paquette

如何检测是否已经运行了一个javascript构造函数?

  •  2
  • Jeff Paquette  · 技术社区  · 14 年前

    我正在使用jquery tools选项卡和carousel。转盘嵌入在一个选项卡中,该选项卡将加载到一个beforeclick回调中。

    通常,carousel在document ready函数中初始化,如下所示:

    $(function() { 
            // initialize scrollable 
            $("div.scrollable").scrollable({ 
                    size: 3, 
                    clickable: true, 
                    loop: false 
                }).mousewheel(); 
    

    当通过beforeclick加载carousel时,这不起作用,因为当dom就绪时,这个选项卡还没有加载。

            $("ul.tabs").tabs("div.panes > div", {
              initialIndex: 0,
                 onBeforeClick: function(event, i) {
                        // get the pane to be opened
                    var pane = this.getPanes().eq(i);
    
                    var src = this.getTabs().eq(i).attr("href");
                    var langPattern = "/^" + getLang() + '/';
                    var forceReload = false;
                    if (src.match(langPattern) == null)
                    {
                      src = getLang() + "/" + src;
                      forceReload = true;
                    }
                    if (pane.is(":empty") || forceReload) {
                        // load it with a page specified in the tab's href attribute
                        pane.load(src);
                        // initialize scrollable - ONLY SHOULD BE DONE ONCE
                    $("div.scrollable").scrollable({ 
                        size: 3, 
                        clickable: true, 
                        loop: false 
                    }).mousewheel(); 
                    }
                }
          }).history();;
    

    我的问题是两方面的:

    首先,是否有一个事件我可以添加一个处理程序来初始化第一次加载时的滚动? 第二,如果没有,有没有一种方法可以确定是否已经构造了滚动条?

    此代码背后的思想是基于用户的语言选择加载本地化的HTML片段。这是CD上的目录,而不是联机目录。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jarrett Meyer    14 年前

    你可能想看看 jQuery live event . 此事件匹配所有当前和将来的DOM匹配。

    编辑1 你要绑定到 div.scrollable onload 事件,对吗?

    $('div.scrollable').live('load', function() {
        // etc.
    });
    
        2
  •  0
  •   Jeff Paquette    14 年前

    我通过将回调附加到 load 呼叫:

    pane.load(src, "", function(){
      $("div.scrollable").scrollable({ 
            size: 3, 
            clickable: true, 
            loop: false 
        }).mousewheel();    
    });