我有下面的代碼,它應該從選定的jQuery選項卡中的跨度中獲取文本,但它似乎總是落後一下。即如果我點擊tab1,它什麼都不顯示,如果我點擊tab2,它會顯示tab1內的span中的文本。 tab3將顯示tab2的跨度等。單擊一下
不知道我做錯了,但這裏是我的代碼目前有:
的jQuery:
$('[id^="tab"]').live('click', function() {
alert($("li.ui-tabs-selected span").text())
});
HTML:
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active" id="tab_group_44">
<a href="#ui-tabs-2">
<span>span content 1</span>
</a>
</li>
<li class="ui-state-default ui-corner-top" id="tab_group_48">
<a href="#ui-tabs-4">
<span>span content 2</span>
</a>
</li>
<li class="ui-state-default ui-corner-top" id="tab_pg_1">
<a href="#ui-tabs-6">
<span>span content 3</span>
</a>
</li>
標籤代碼:
$("#tabs").tabs({
cache: true,
ajaxOptions: {
success: function(){
$(".column").sortable({
connectWith: '.column',
start: function(e, ui){
ui.placeholder.height(ui.item.height());
},
revert: true,
opacity: 0.7,
forcePlaceholderSize: false,
tolerance: 'pointer',
handle: '.btnWidgetDarkMove, .btnWidgetLightMove, .btnWidgetBrightMove, .btnWidgetGrayMove, .btnWidgetOtherMove',
update: function(event, ui) {
var that = this;
var column = $(this).closest("div").attr("class").split(" ");
if($(that).closest("div").attr("id") !== "column_4") {
$.ajax({
url: '/ajax/save_homepage_widget_order.aspx',
type: 'POST',
data: { strTab:$("li.ui-tabs-selected").attr("id"), strColumn:column[1], strItems:$(that).sortable('serialize', {key: 'item', attribute: 'class', expression: /(\d+)/}) },
error: function(xhr, status, error) {
//console.log(xhr.responseText);
},
success: function() {
//should use a return value here to make sure move has been saved
}
});
}
}
});
}
}
});
您是否知道[live is deprecated](http://liveisdeprecated.com)?除非你使用古老版本的jQuery,否則你應該使用(1.7+)或委託。另外,爲什麼你將一個jQuery對象傳遞給jQuery('$($())')? –
我的猜測是你的函數執行後選擇了li。 – Igor
你爲什麼這樣做:'$($('[id^=「tab」]'))'而不是這個:'$('[id^=「tab」]')'? – gcochard