2011-04-18 53 views
0

我經常在#form#edit之間切換。哪個選擇器更快。選擇第一個還是第二個選擇器會更好?jQuery切換選擇器,這是更好的

var $form = $('#form'); 
var $edit = $('#edit'); 
$form.toggle(); 
$edit.toggle(); 

$('#form, #edit').toggle(); 
+4

我的字 「快」 死了。 – BoltClock 2011-04-18 19:18:11

+1

@BoltClock,考慮到你的迴應,Pinkie是否值得名譽巫師徽章呢? – 2011-04-18 19:21:25

+0

這不應該打擾你,因爲它幾乎不會影響整體表現,但可能第二種方法更好,因爲腳本更小 – Zlatev 2011-04-18 19:22:07

回答

2

「最快」的解決方案根本不是使用.toggle(),而是.css()

$formEdit = $('#form, #edit'); 
if ($formEdit.css(':hidden')) { 
    $formEdit.css('display', 'block'); 
} else { 
    $formEdit.css('display', 'none'); 
} 

資源:http://www.learningjquery.com/2010/05/now-you-see-me-showhide-performance

+0

是的,但是然後你沒有得到動畫 – Neal 2011-04-18 19:23:47

+0

@Neal:正確,動畫不會使用這種方法。但是,該問題的代碼不使用任何動畫。 – McHerbie 2011-04-18 19:25:39

+1

非常好,這比這裏提到的任何選擇器快80%。 http://jsperf.com/toggle-00 – Pinkie 2011-04-18 22:22:08

2

怎麼樣:

$formEdit = $('#form, #edit'); 
$formEdit.toggle(); 
//than you can use the combo selector later as well 
1

第二個:$('#form, #edit').toggle();是有效的方法。

2

簡答:取決於。

你打算在另一個地方再次做這個操作,還是這是一次性的事情?如果這是一個一次性的事情,還有的將是幾乎沒有區別,但幾乎總是使用內置的功能是最快的:

$('#form').add('#edit').toggle(); 

如果你想再次引用這些相同的項目,絕對將它們保存到一個變量,就像你的第一個例子,或者像Neal建議的那樣,將它們保存到同一個變量中。