Применение значения атрибута jQuery к новым элементам DOM (результат запроса AJAX) - PullRequest
1 голос
/ 07 мая 2010

У меня есть div на странице, содержимое которого заменяется запросом AJAX, когда пользователь выбирает опцию из списка select. Когда страница загружается, я запускаю команду, чтобы отключить функцию автозаполнения для всех элементов ввода текста страниц:

//Stop that pesky browser autocomplete
$('input[type=text]').attr("autocomplete", "off");

Однако, когда новые элементы появляются в div после вызова AJAX, эта строка кода не ссылается на них, потому что они не были частью исходного DOM (когда страница была загружена). Я попытался добавить строку автозаполнения в конец функции сообщения:

//AJAX Post request that changes the fields in the address div for each different country
$("div#address select#country").live("change", function() {
    $.post("<?php print($_SERVER['PHP_SELF']); ?>", { country: $(this).val() }, function(data) {
        $('div#address').html(data);
    }, "text");
        $('div#address input[type=text]').attr("autocomplete", "off");
});

Но по какой-то причине это не работает, и автозаполнение появляется при вводе текста в любое из полей адреса. Насколько мне известно, я не могу использовать .live () для выбора элементов ввода, потому что изменение атрибута не классифицируется как событие.

Так может ли кто-нибудь посоветовать мне, как изменить атрибуты вновь созданного элемента DOM?

1 Ответ

2 голосов
/ 07 мая 2010

Вам нужно добавить строку в вашу функцию записи после добавления нового html на страницу.

$("div#address select#country").live("change", function() {
    $.post("<?php print($_SERVER['PHP_SELF']); ?>", { country: $(this).val() }, function(data){
        $('div#address').html(data);
        $('div#address input[type=text]').attr("autocomplete", "off");
    }, "text");
});

Если вы запускаете javascript так, как он есть в вашем сообщении, тогда .attr("autocomplete", "off");выполняется до того, как публикация завершена, поэтому она не применяется к новому HTML.Помещение в функцию post гарантирует, что ваш новый html будет на странице.

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