jquery-ui选项卡中的.select,.show和.load之间有什么区别?
我发现当选中一个选项卡时会触发三个事件,并且我看到事件被触发的顺序,但我很困惑要使用哪个事件或这些事件如何真正不同。如果所有三个都被解雇了,我不能只是把我的代码放在任何事件中吗?jquery-ui选项卡中的.select,.show和.load之间有什么区别?
我必须在这里失去一些东西。有人可以澄清吗?
因此,在弄乱了这个之后,我将分享我最终做的事,希望它能帮助别人。
我不得不根据Ajax调用中返回的数据生成动态选项卡。它基本上是日期的数据,其中标签是日期,并显示该日期内的任何数据。
从返回的数据生成选项卡很容易,但我无法弄清楚如何写出关联的数据。最后(我应该从这里开始),我查看了生成的dom,并注意到动态创建的选项卡也创建了一个div。也许这对一些人来说是显而易见的(这对我来说不是这样),如果是在文档中,我错过了它。无论如何,这段代码会从一个数组中生成标签,然后在点击标签时将html附加到关联的div。我不需要所有的变量,但我认为这可能会使它更具可读性。 在添加标签之前添加显示功能,否则它将无法工作!
var _sessionDates = getSessionDates(sessionData.Sessions);
var $tabs = $("#sub-tabs");
$tabs.tabs({
show: function(event, ui) {
var selected = $tabs.tabs('option', 'selected');
var _sessionDates = getSessionDates(sessionData.Sessions);
var grid = buildGrid(_sessionDates[selected]);
$('#' + _sessionDates[selected]).html(grid);
}
});
$(_sessionDates).each(function(i, dayOfShow) {
var d = dateFormat(dayOfShow, "mediumDate");
$tabs.tabs('add', '#' + dayOfShow, d);
});
最后,我不得不“滚动”通过在选项卡中显示我的数据,我能做到这一点与这两条线。第一行给出了与选定的选项卡相对应的div元素的id(这实际上是重要的部分),第二行只是调用我的方法,并传递给div的id少于'#'。我的约会也是我的身份证。有一个全局变量,我在这之外改变了它,使它工作。我知道这很糟糕,当我重构它时我会删除它。
var $el = $($('#sub-tabs a')[$('#sub-tabs').tabs('option', 'selected')]).attr('href');
$($el).html(buildGrid($el.replace('#', '')));
select
被点击选项卡时被触发,但之前的标签已被证明
load
远程标签的内容已经被加载之后被触发(即,选项卡其内容不是初始页面有效载荷的一部分,但当用户点击相关选项卡时,通过ajax调用加载)
show
被触发后一个选项卡已被证明
的jQuery documentation使得这个比较清晰,但我不得不为了充分了解select
和show
之间的差异进行试验。
是的,我创建了一些事件并投掷了一些警报,并观察它们是如何被解雇的。我得到了创建和选择,创建被激发一次,选择几乎被作为退出事件触发。加载和显示正在投掷我,但现在它完成ajax调用后启动加载是有意义的。 – Jay 2011-05-20 21:23:15