новичок jQuery: как эффективно сделать несколько действий с тем же элементом DOM?

Я также превратил набеги в мир XSLT, и я нашел, что он был немного неловким в местах. Я думаю, что моим основным вопросом был в трудности при преобразовании "чистых данных" XML в полную страницу HTML. В ретроспективе, возможно, использование XSLT для генерации фрагмента страницы, который мог быть составлен вместе с другими фрагментами с помощью Серверных Сценариев (например, SSI) решит многие мои проблемы.

Одна из возможных ошибок состояла в том, чтобы попытаться создать общий макет страницы для окружения моих данных путем импорта XHTML или других данных XML в использовании документа () функция.

другая ошибка пыталась сделать, программируемым вещам нравится, создают общий шаблон для генерации таблиц на данных XML с логикой, которая сделала вещи, любят использование различные фоновые цвета строки за строки с определенными значениями и позволяют Вам определять некоторые столбцы, которые будут отфильтрованы.

Не говоря уже о попытке создать список строк значений от данных XML, которые, казалось, только были разрешимыми использующими рекурсивными шаблонными вызовами.

, Что я получал? Ну, источник страницы является данными XML тут же и доступный средству просмотра. Данные и представление аккуратно разделяются.

я сделал бы это снова? Вероятно, не, если я действительно не хотел разделение данных/представления на статичный страница. Иначе я, вероятно, записал бы направляющие или приложение EE Java, которое могло генерировать режим просмотра XML или шаблонную обработку использования режима просмотра HTML - все преимущества, но с намного более естественным (для меня) язык программирования в моих кончиках пальцев.

10
задан laramichaels 11 December 2009 в 17:12
поделиться

6 ответов

Я также согласен с тем, что объединение в цепочку - лучший метод для использования, но кое-что еще, ни у кого нет адреса здесь, использует .andSelf () ( 1 ) и .end () ( 2 ) при связывании.

Следующий код добавляет класс «границы» как к div , так и к p содержится внутри.

$("div").find("p").andSelf().addClass("border");

Использование .end () "сбрасывает" селектор.

$("div")
  .find("p").addClass("myParagraph").end()
  .find("span").addClass("mySpan");

Обновление: .andSelf () устарел и по существу переименован в ] .addBack () , используйте его таким же образом.

9
ответ дан 4 December 2019 в 01:01
поделиться

Every time you use a jQuery function, it returns the full jQuery object from the initial query. This lets you chain actions together, so the actual query only happens the first time.

From your examples, it doesn't look like you ever use previousHtml, so you don't need to grab it at all. I think you can just do this:

$("#myDiv").html('bla bla bla').addClass('tangoClass');
1
ответ дан 4 December 2019 в 01:01
поделиться

Yes I would recommend to use chaining, because the jQuery methods usually return the element you modified, so it doesn't need to be looked up in the DOM again. And I find it more readable, too (you know which operations belong to which element).

0
ответ дан 4 December 2019 в 01:01
поделиться

the two are the same.

var myDiv = $("#myDiv"); // $("#myDiv") runs document.getElementById,
                         // wraps the DOMElement, returns the wrapper.
myDiv.addClass("tangoClass"); // obviously reuses the object
myDiv.html("bla bla bla"); // ditto

chaining is exactly the same because jQuery methods return this, the object that they're attached to:

myDiv
    .addClass("tangoClass")
    .html("bla bla bla")
;

you can test this with (myDiv === myDiv.html("bla bla bla"))

to answer your question "which should I use": DRY (Don't Repeat Yourself) would suggest chaining. just don't forget readability (don't lump many method calls into a single line; my recipe for readability is above)

0
ответ дан 4 December 2019 в 01:01
поделиться

Это зависит от того, какие функции вы вызываете для этого элемента, поскольку не все функции возвращают элемент DOM. Однако, если все функции, которые вы должны вызвать, всегда будут возвращать элемент DOM, это, безусловно, может сделать ваш код более читабельным.

1
ответ дан 4 December 2019 в 01:01
поделиться

Просто потому, что никто не упомянул об этом, использование вашего первого метода также будет работать и сохранить поиск DOM.

Однако цепочка, как говорили другие, было бы более "правильным" способом использования одного и того же элемента и применения к нему различных действий.

Удачи!

0
ответ дан 4 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: