Рекурсивная функция jQuery для изменения значений выбора опций - PullRequest
0 голосов
/ 27 января 2011

У меня есть форма, которую я пытаюсь изменить с помощью jQuery.По сути, моя форма состоит из двух элементов, и мне нужно изменить значение первого параметра в каждом из них.Однако есть опция «добавить больше», которая использует AJAX для динамической генерации другого элемента, который также необходимо изменить.Эту кнопку добавления больше можно нажимать неограниченное количество раз.

Прямо сейчас у меня есть это:

$(document).ready(function(){
  $("#myname-0-field option:first").val("None");
  $("#myname-1-field option:first").val("None");
});

Это прекрасно работает, но как только кнопка «добавить больше» нажимается, яиметь больше элементов с именами "# myname-2-field", "# myname-3-field", "# myname-4-field" и т. д. На это, очевидно, не влияет добавление еще одной строки в мой jQuery, поскольку документ ужезагружается, когда они добавляются.

Таким образом, реальный вопрос заключается в том, может ли кто-нибудь указать мне правильное направление написания функции, которая может реагировать при добавлении нового элемента и изменять его.Если возможно, я также ищу функцию, которую нужно знать, и ищу «# myname-X-field option: first» для аккуратности.

Ответы [ 2 ]

0 голосов
/ 27 января 2011

Из API jQuery смотрите live function

Возможно, вы могли бы добавить класс к вашему элементу, чтобы легче было найти конкретный элемент, и это не добавило бы событие другим подобным элементам.

В примере у меня есть Ли с классом

$('li.myClass').live('click', function() {
    $(this).val(); // this is the getter for clicked value
    $(this).val("some_value_here"); // this is the setter for clicked value
});

Теперь вы можете добавить больше элементов (которые имеют myClass class), и у него будет событие click.

Btw. если вы знаете, что все элементы находятся внутри некоторого контейнера (например, div), вы можете написать более эффективный jQuery, используя делегат .

$('#container_id').delegate('li.myClass', 'click', function () {
});

Это более эффективно, потому что ваши новые элементы выглядят только под «контейнером», а не из всей структуры DOM.

0 голосов
/ 27 января 2011

использовать функцию live ()

Затем, используя каждую функцию, установите значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...