2

我正在处理的页面中使用 jquery-tools 选项卡和轮播。轮播嵌入在选项卡中,选项卡在 beforeClick 回调中加载。

通常,轮播在文档就绪函数中初始化,如下所示:

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

这在通过 beforeClick 加载轮播时不起作用,因为当 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 上的目录,而不是在线目录。

4

2 回答 2

1

您可能想查看jQuery 现场活动。此事件匹配所有当前和未来的 DOM 匹配。

编辑 1 你想绑定到div.scrollableonload事件,对吗?

$('div.scrollable').live('load', function() {
    // etc.
});
于 2010-01-16T02:14:11.773 回答
0

我通过将回调附加到load呼叫解决了我的问题:

pane.load(src, "", function(){
  $("div.scrollable").scrollable({ 
        size: 3, 
        clickable: true, 
        loop: false 
    }).mousewheel();    
});
于 2010-01-16T14:42:45.697 回答