3

我已经使用 Kynetx 的 jQuery UI 集成成功地在页面上产生了 jQuery UI 效果。

但是,我无法从侧选项卡中获得效果。这是我的申请规则。我希望有人能指出我所缺少的:

global {
  css  <<
         #tester 
         { 
             margin-left: 10px; 
             margin-top: 10px; 
             width: 80px; 
             height: 80px; 
             background: green; 
             position: relative; 
         }
       >>;
 }

rule tab is active {
select when pageview ".*" setting ()

 pre { 
        results = <<  
           <div id='tester'></div>
            >>;        
}
{
     sidetab() with pathToTabImage = "http://dl.dropbox.com/u/10762217/search-tab-images/tab2.png" 
               and tabColor = "transparent"
               and topPos = "50px"
               and message = results
               and divCSS = {
                             "z-index": 10000,
                             "backgroundColor": "#ffffff",
                             "width": "200px",
                             "padding": "0px",
                             "imageHeight": "162px",
                             "imageWidth": "53px",
                             "-moz-border-radius": "5px"
                            };
              watch("#tester", "click");
           }



 }



 rule jeffect_on_click is active {
     select when web click "#tester"
        jquery_ui:effect("#tester","bounce","normal");


 }
}

我确保包括

use javascript resource jquery_ui_js

在我的元标记中。

4

1 回答 1

4

你没有错过任何东西。目前,运行时,特别是watch()操作使用,.live()来注册事件处理程序。 sidetab()吃掉所有附加的事件处理程序.live()sidetab()吃掉它们是因为.live()实际上是通过将您的点击处理程序附加到document对象上来工作的,然后监视事件冒泡。当它到达 时document,它会检查事件是否是从与您的选择器匹配的元素中注册的,如果是,它会触发您的处理程序。sidetab()通过调用来杀死它event.stopPropagation(),这会停止事件的冒泡,所以它永远不会到达document,所以你的处理程序永远不会触发。

您可以通过使用 jQuery 实用函数注册事件处理程序来解决此问题,.bind(). .bind()只会为已经存在的元素注册处理程序,但只要您在调用之前.bind()注意侧选项卡中的元素存在,就可以了。

像这样的东西:

$K("#tester").bind("click", function() {
  $K(this).effect("bounce", { "times" : 3 }, 300);
});

让我们把它放在整个应用程序的上下文中,好吗?

为了使这个示例简单,我们将简单地emit附加我们的处理程序所需的 javascript,并在单击时让 div 弹跳。此示例也可用作要点

ruleset a369x111 {
    meta {
        name "Sidetab->Events"
            description <<
                Sidetab jQuery
            >>
            author "AKO"
            logging on

            use javascript resource jquery_ui_js

    }
    global {
        css  <<
            #tester { 
                margin-left: 10px; 
                margin-top: 10px; 
                width: 80px; 
                height: 80px; 
                background: green; 
                position: relative; 
            }
        >>;
    }

    rule tab {
        select when pageview ".*"

            pre { 
                results = << 
                    <div id="tester"></div>
                >>;        
            }
        {
            sidetab() with pathToTabImage = "http://dl.dropbox.com/u/10762217/search-tab-images/tab2.png" 
                and tabColor = "transparent"
                and topPos = "50px"
                and message = results
                and divCSS = {
                    "z-index": 10000,
                    "backgroundColor": "#ffffff",
                    "width": "200px",
                    "padding": "0px",
                    "imageHeight": "162px",
                    "imageWidth": "53px",
                    "-moz-border-radius": "5px"
                };
                emit <|
                    $K("#tester").bind("click", function() {
                        $K(this).effect("bounce", { "times" : 3 }, 300);
                    });
               |>;
        }



    }
} 
于 2010-11-29T22:00:46.143 回答