Единственная причина, в первом примере, это то, что [0] возвращает из массива ' 0 'из массива объектов jQuery (AKA: collection).
$('p')[0].hide(); // will NOT work
([0]
является JS геттер из массива, что-то вроде .get()
метода в JQuery)
, поэтому он снова завернуты внутри функции объекта JQuery
$($('p')[0]).hide(); // Hides the '0' <p> element
Вы можете также обертывание объектов jQ на дополнительные объекты *
$($($($($('p'))))).hide();
*, который unneded, redundand, медленно, Неправильный в любом случае
Резюме:
$($('p')[0]).hide(); // WORKS! cause the JS HTMLelement is
// again wrapped into an jQ Object
$($('p').get(0)).hide(); // WORKS (same reason)
$('p')[0].hide(); // WRONG! returns the unoperable (by jQ) JS Object
// HTMLelement, not a jQuery object
$('p').get(0).hide(); // WRONG! (same reason)
$($($($($('p')[0])))).hide(); // WTH?!
площадка: http://jsbin.com/enawup/3/edit
Я не вижу никаких причин делать это. Может быть, у них изначально были другие вещи между круглыми скобками, но решил удалить этот материал ... только чтобы забыть о парне ... не имеет никакого смысла. – Gray