如果我写
$month.find('.d-row').attr('id', 'myid');
我没有在Visual Studio中获得 .attr(...)的intellisense,表明语法不太正确。
如果我写的话:
$($month.find('.d-row')).attr('id', 'myid');
我得到intellisense,表明这是写这个
的正确方法然而,两种语法都可以正常工作,我认为使用第二种方式是正确的,这是正确的吗?为什么两者都有效?
答案 0 :(得分:6)
第二种方式是不更正确。它等同于第一种方式,但是效率较低。第二种方式效率较低,因为它重新jQuery了一个jQuery对象,当你已经在使用jQuery对象时这是完全没必要的。重申一下:如果$foo
已经是jQuery对象,那么永远只有没有理由来编写$($foo)
。
它们都有效,因为它们是等效的。
答案 1 :(得分:2)
第二种方式有效,因为$($some_jQuery_object)
只返回相同的jQuery对象,因此无论你在DOM元素周围使用多少jQuery包装器,都会获得相同的对象。
那就是说,第一种方式是有效的,正确的,更可取的。 Visual Studio显然需要修复错误。