2012-08-10 79 views
-1

讓我清楚這行代碼現在工作。我只是覺得它寫的愚蠢。你知道寫這個清潔方法:更好的jQuery選擇器

$('#'+this.wrapper.id+' .nub').foo(); 

我跑通過jspref.com的答案,這裏的結果: http://jsperf.com/jquery-selector-context-test

貌似.find是贏家。至少在鍍鉻。

+0

人誰downvote,不發表意見是比希特勒更壞,更糟的是我說的! – Fresheyeball 2012-08-10 04:41:25

+0

我已經得到了一些偉大和非常有效的答案已經傢伙,來與所有downvotes。即使在微不足道的情況下,也不希望更好地編寫代碼。 – Fresheyeball 2012-08-10 04:46:36

+0

這不是一個壞問題,你是對的。 – undefined 2012-08-10 04:51:34

回答

1
$(this.wrapper).find('.nub').bar(); 
+0

根據基準測試的最佳答案。你在xdazz之前回答了這個建議 – Fresheyeball 2012-08-10 05:04:30

1

實際上並不是那麼糟糕。如果你願意,你可以把選擇串入其自己的變量,雖然:

var selectorString = "#" + this.wrapper.id + " .nub"; 
$(selectorString).foo(); 
+0

恩,這基本上是一樣的。真的,我已經將部分選擇作爲dom元素,應該能夠以某種方式利用它。 – Fresheyeball 2012-08-10 04:39:29

+1

@Fresheyeball - 好吧,沒有什麼需要改進的地方。它只是唯一的代碼行。說實話,我認爲你目前的解決方案沒有任何問題。 – jeff 2012-08-10 04:41:21

+0

那麼,我想知道做這個E-V-E-R的最好方法!它只是一條線,但我將不得不經常使用類似的選擇器。它值得了解正確的方式。 – Fresheyeball 2012-08-10 04:43:18

4
$('.nub', this.wrapper).foo(); 
2

您可以使用this.wrapper作爲選擇的情況下。

$('.nub', this.wrapper).foo(); 

$(this.wrapper).find('.nub').foo();