不了解jquery ui标签的事件委托

时间:2010-07-30 18:47:06

标签: jquery-ui event-handling

我只是没有使用jquery ui标签进行事件委派,或者根本没有!

我获得了jquery ui标签的代码,并使用ajax完美地加载页面。但是我无法理解事件委派。我加载了4个包含外部内容的选项卡,具体取决于打开的选项卡。在这些选项卡中,我想将相同的小部件附加到输入按钮和链接。到目前为止,我的代码看起来像这样

JS其他页面已加载

$("button, input:submit, a", ".create_button").button();
 $("a.edit_button").button({
         icons: {primary: 'ui-icon-pencil'}
    });
   $("a.delete_button").button({
         icons: {primary: 'ui-icon-circle-close'}
    });
   $("a.active_button").button({
         icons: {primary: 'ui-icon-lightbulb'}
    });

JS For Tabs:

<script type="text/javascript">
         $(document).ready(function() {
          $("#tabs").tabs({
           ajaxOptions: {error: function(xhr, status, index, anchor) 
                                         {$(anchor.hash).html("Could not load");}},
           selected: 0})
         });
</script>

HTML

<div id="tabs">
  <ul>
    <li><a href="ajax_passes/member_id/9">Pass Information</a></li>
    <li><a href="ajax_entries/member_id/9">Entries</a></li>
    <li><a href="ajax_event/member_id/9">Event Administration</a></li>
    <li><a href="ajax_profile/member_id/9">Profile</a></li>
  </ul>
</div>

我在这里学到了堆栈溢出,我必须使用live()将click事件附加到我的#tabs div。无论如何最好的猜测。

然而,我找不到任何适合我的例子以及对事件授权的有限理解。

感谢任何帮助。 瑞克

3 个答案:

答案 0 :(得分:0)

现在,您正在处理“错误”,但没有别的。你需要处理“成功”或“完成”...实际上,你为什么要使用AJAX?您似乎没有从页面外请求任何数据?

答案 1 :(得分:0)

似乎问题的关键在于:

  

在这些标签中,我想将相同的小部件附加到输入按钮和链接。

听起来您想要使用标签小部件的“show”方法:

 $(document).ready(function() {
      $("#tabs").tabs({
       ajaxOptions: {error: function(xhr, status, index, anchor) 
                                     {$(anchor.hash).html("Could not load");}},
       selected: 0,
       show: function() {
         $([selectors for buttons or jQuery UI widgets in your tabs]).button();
       }
    })
 });

FWIW,这个问题与event delegation无关。该文章有助于理解这一概念。

答案 2 :(得分:0)

事实证明.live()仅适用于事件。因此,虽然我可以将某些内容绑定到链接,但在链接发生事件之前,它实际上不会生效,即单击或悬停。

解决方法是使用加载的内容动态地向链接添加事件,但这非常棘手并且会给应用程序增加很多开销。相反,我选择以不同的方式在加载的内容中设置内容。在了解这一点的过程中,我最终使用live()进行表单提交,并在提交后重新加载内容。

谢谢你们的帮助。 RWL。你最终没有回答这个问题,但是你的刺激让我朝着正确的方向前进,我学到了很多东西。我最终能够自己解决问题。你知道,给一个人钓鱼或教他钓鱼,yadi yadi yadi ...

谢谢!