อัปเดต [ อา. 26/26/2555 ] คำตอบนี้ได้รับความนิยมมากจนฉันตัดสินใจนำมาทำเป็นบล็อก / บท
ช่วยสอนเต็มรูปแบบ
โปรดไปที่บล็อกของฉันที่นี่เพื่อดูข้อมูลล่าสุดที่เข้าถึงได้ง่ายในการทำงานกับแท็บใน jQueryUI
รวมอยู่ด้วย (ในบล็อกด้วย) เป็นjsFiddle
¡¡¡อัพเดท! โปรดทราบ: ในเวอร์ชันใหม่กว่าของ jQueryUI (1.9+) ui-tabs-selected
ได้ถูกแทนที่ด้วยui-tabs-active
ไฟล์. !!!
ฉันรู้ว่าเธรดนี้เก่า แต่สิ่งที่ฉันไม่เห็นกล่าวถึงคือวิธีรับ "แท็บที่เลือก" (ขณะนี้ดร็อปดาวน์แผง) จากที่อื่นที่ไม่ใช่ "เหตุการณ์ของแท็บ" ฉันมีวิธีง่ายๆ ...
var curTab = $('.ui-tabs-panel:not(.ui-tabs-hide)');
และเพื่อให้ได้ดัชนีได้อย่างง่ายดายแน่นอนว่ามีวิธีที่ระบุไว้ในเว็บไซต์ ...
var $tabs = $('#example').tabs();
var selected = $tabs.tabs('option', 'selected'); // => 0
อย่างไรก็ตามคุณสามารถใช้วิธีแรกของฉันเพื่อรับดัชนีและอะไรก็ได้ที่คุณต้องการเกี่ยวกับแผงควบคุมนั้นค่อนข้างง่าย ...
var curTab = $('.ui-tabs-panel:not(.ui-tabs-hide)'),
curTabIndex = curTab.index(),
curTabID = curTab.prop("id"),
curTabCls = curTab.attr("class");
// etc ....
PS หากคุณใช้ตัวแปร iframe แล้ว. find ('. ui-tabs-panel: not (.ui-tabs-hide)') คุณจะพบว่าการทำเช่นนี้ทำได้ง่ายสำหรับแท็บที่เลือกในเฟรมเช่นกัน จำไว้ว่า jQuery ได้ทำงานหนักทั้งหมดแล้วไม่จำเป็นต้องสร้างวงล้อใหม่!
เพียงเพื่อขยาย (อัปเดต)
คำถามเกิดขึ้นกับฉัน "จะเกิดอะไรขึ้นถ้ามีพื้นที่มากกว่าหนึ่งแท็บในมุมมอง" คิดง่ายๆอีกครั้งใช้การตั้งค่าเดิมของฉัน แต่ใช้ ID เพื่อระบุแท็บที่คุณต้องการเก็บไว้
ตัวอย่างเช่นหากคุณมี:
$('#example-1').tabs();
$('#example-2').tabs();
และคุณต้องการแผงปัจจุบันของชุดแท็บที่สอง:
var curTabPanel = $('#example-2 .ui-tabs-panel:not(.ui-tabs-hide)');
และถ้าคุณต้องการแท็บ ACTUAL ไม่ใช่แผงควบคุม (ง่ายมากซึ่งเป็นเหตุผลว่าทำไมฉันถึงไม่พูดถึงมันมาก่อน แต่ฉันคิดว่าฉันจะตอนนี้เพื่อให้ละเอียดถี่ถ้วน)
// for page with only one set of tabs
var curTab = $('.ui-tabs-selected'); // '.ui-tabs-active' in jQuery 1.9+
// for page with multiple sets of tabs
var curTab2 = $('#example-2 .ui-tabs-selected'); // '.ui-tabs-active' in jQuery 1.9+
โปรดจำไว้ว่า jQuery ทำงานหนักทั้งหมดอย่าคิดให้ยาก