/ / Чи є якась причина вкладати дзвінки в $ (jQuery)? - javascript, jquery

Чи є підстави для вкладеного дзвінка на $ (jQuery)? - javascript, jquery

Я надирався навколо вихідного коду веб-сайту, коли натрапив на такий код:

$($("#newForm_step1")).hide("slide", { direction: "left" }, 0);

і це:

$($($(".breadcrumbs")[0]).children().last()).html("...");

Я ніколи не бачив $ (jQuery) функція, що використовується таким чином, і мені було цікаво, чи не може бути "будь-якої практичної причини зробити щось подібне?" Наскільки мені відомо, загортаючи об’єкт jQuery із закликом до $ просто повертає об'єкт jQuery для того ж селектора, а методи на jQuery об'єкти повертаються this, тож я не бачу, для чого потрібні будуть вкладені дзвінки $.

Відповіді:

1 для відповіді № 1

Ні, для цього немає підстав.

У першому прикладі $($(...)) є зайвим. Немає абсолютно ніякого ефекту в негайному загортанні об’єкта jQuery в інший об’єкт jQuery.

Рядок має бути прочитаний

$("#newForm_step1").hide("slide", { direction: "left" }, 0);

У другому прикладі $(...)[0] повертає необроблений елемент DOM, тому він знову загортається перед тим, як мати jQuery .children().last() посилався на це. Результатом цього є вже об’єкт jQuery, тому не потрібно повторно завертати його, а "розгортання" можна було уникнути, зателефонувавши .first() замість [0].

Рядок має бути прочитаний

$(".breadcrumbs").first().children().last().html("...");

0 для відповіді № 2

Немає необхідності обертати jQuery об'єкт jQuery. Це призведе до того ж, але перекодування та надмірність.

Але коли у вас є DOM Object, вам потрібно обернути jQuery, щоб він був об’єктом jQuery.

Візьмемо ваш приклад:

$(".breadcrumbs")[0];//[0] converts to JavaScript Object

Тепер, якщо ви хочете знову працювати з jQuery, ви можете обернутись jQuery:

$($(".breadcrumbs")[0]);//is now a jQuery Object

Але цей приклад непотрібний, тому що ви можете зробити так само:

$(".breadcrumbs:eq(0)");//selects first .breadcrumbs element

Однак якщо у вас є якийсь об'єкт DOM, а не jQuery, тоді вам потрібна оболонка jQuery для роботи з методами jQuery.


Ви повинні пам’ятати про це:

Для об єкта JavaScript потрібні методи JavaScript:

javascriptObject.javascriptMethods

Ex-

$(".breadcrumbs")[0].addEventListener();//javascript addEventListener method

jQuery Object потребує методів jQuery, щоб бути ланцюжком:

jQueryObject.jQueryMethods

Ex-

$(".breadcrumbs").on();//jQuery on method