我只是没有使用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。无论如何最好的猜测。
然而,我找不到任何适合我的例子以及对事件授权的有限理解。
感谢任何帮助。 瑞克
答案 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 ...
谢谢!