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