2010-07-01 100 views
0

也許是我的最後一個問題(現已刪除)被人誤解,所以我更清晰重新張貼這一次:請解釋這個jQuery

的jQuery(UI):

$("#tabs").tabs({ 
    select: function(event, ui) { 
     alert(ui.panel.id); 
     $('input[name=myinput], textarea[name=myinput]').attr('disabled', true); 
     $('input[name=myinput].' + ui.panel.id + ', textarea[name=myinput].' + ui.panel.id).removeAttr('disabled'); 
     $('input[name=source]').val(ui.panel.id); 
    } 
}); 

HTML:

<div id='tabs'> 
    <ul> 
     <li><a href="#direct">Direct input</a></li> 
     <li><a href="#files">File upload</a></li> 
     <li><a href="#uri">URI</a></li> 
    </ul> 
    <div id="direct"> 
     <textarea name='myinput' class='direct'></textarea> 
    </div> 
    <div id="file"> 
     <input type='file' name='myinput' class='file' /> 
    </div> 
    <div id="uri"> 
     <input type='text' name='myinput' class='uri' /> 
    </div> 
</div> 
<input type='hidden' name='source' value='direct' /> 
<input type='submit' value='GO' /> 

我不太明白jQuery對輸入做什麼。我想要使​​用常規的jQuery,並避免使用「jQueryUI」選項卡,因此它的重要性在於,我瞭解使用常規jQuery時輸入的情況可以重現相同的效果。 希望我有道理。

感謝您的幫助!

+0

如果您使用的是Regualar Jquery,那麼默認情況下您不能使用選項卡。你必須編寫你自己的代碼來使用Tabs。所以你的問題是什麼?你不需要在這裏使用標籤?或者你想爲Tabs編寫自己的代碼? – BlueBird 2010-07-01 05:57:22

+0

是的,我想使用我自己的代碼爲標籤,並準備好了,我只是不明白輸入/源部分。標籤正在工作,但輸入/源不是它應該處理的。 – 3zzy 2010-07-01 06:01:02

回答

2

select函數被調用:

$('input[name=myinput], textarea[name=myinput]').attr('disabled', true); 

找到名爲myinput所有inputtextarea元素和禁用它們。

$('input[name=myinput].' + ui.panel.id + ', textarea[name=myinput].' + ui.panel.id).removeAttr('disabled'); 

找到任何input元素和textarea元素的名稱myinput相匹配的ui.panel.id屬性的值,使它們的類。

$('input[name=source]').val(ui.panel.id); 

找到input元素(或元素,但我敢打賭,只有一個)的名稱source並將其值設置爲ui.panel.id屬性的值。

例如:禁用所有的myinputinputtextarea元件除了所述一個匹配根據其類ui.panel.id屬性,和設置名爲source到該屬性的input的值的,大概是爲了跟蹤哪些輸入已啓用/顯示哪個選項卡。

+0

太好了,謝謝你的解釋。我如何修改此(http://jsfiddle.net/mPv8n/)以使其工作相同?感謝堆! – 3zzy 2010-07-01 06:09:56

+0

@Nimbuz:如果你喜歡,你實際上可以使用上面的代碼。只要確保輸入和textareas使用上面的名稱和類約定:名稱應該是myinput,並且該類應該是您希望它們顯示的選項卡的ID。 (我可能不會像這樣使用'name'屬性,我可能會使用另一個類名或'data-tabid'屬性,因爲您可能想在表單中實際使用'name'! – 2010-07-01 06:29:59

+0

Erm..thats我卡住了。你可以請更新那個jsfiddle嗎?非常感謝! – 3zzy 2010-07-01 06:58:03

1

.tabs()是一個jQuery UI插件,可以將您剛添加到標記瀏覽界面的標記轉變爲標記。如果你願意,你可以在jQuery中編寫你自己的tabs()函數,但你可以很容易地download a custom build of jQuery UI。取消選擇所有內容,然後選擇選項卡(僅需要Core和Widget)...

如果您已經有了替代選項卡,T.J.綜合描述了事件處理程序正在做什麼。每次您選擇新的活動選項卡時都會觸發它。

0

您似乎錯誤地認爲jQuery UI是jQuery的一個版本。它實際上是一個jQuery插件。它相當重量級,重量很多千字節。重現jquery ui標籤代碼而不使用jquery ui將是一項重要的工作。您向我們展示的代碼只是簡單地調用jquery ui來創建標籤,但標籤插件在幕後做了大量工作。你可能希望重新考慮你想從jQuery UI移開的願望。

+0

不是真的,我的需求很簡單,請看:http://jsfiddle.net/mPv8n/ – 3zzy 2010-07-01 06:18:03

+0

在這種情況下,開始了jQuery插件標籤是巨大的矯枉過正。我不期望在那裏學到很多東西,因爲你和它在做什麼之間有一個完整的抽象系統。我會直接去http://api.jquery.com看看你需要的dom操作函數。 – Benson 2010-07-01 17:54:29