2012-08-10 85 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();