Как удалить и перезагрузить функции jQuery / javascript после вызова ajax - PullRequest
0 голосов
/ 15 декабря 2011

Допустим, у меня есть этот код:

<div id="content">
</div>

, и я использую простой запрос ajax, чтобы заполнить содержимое данными, которые работают, когда я нажимаю одну кнопку

    $.get("page?num=" + pageNumber, function(data){
                $("div#content").html(data);
});

один разданные будут

<div id="Data1">
</div>

, а в другое время будут

<div id="Data2">
</div>

для каждого идентификатора у меня есть разные функции jquery.Например:

$('#Data1').click(function(){});

некоторые функции похожи, а некоторые отличаются.

Мой вопрос - если я нажимаю кнопку, я загружаю все нужные мне скрипты,когда я нажимаю другую кнопку, мне нужно снова загрузить сценарии для нового содержимого, , но что происходит со старыми функциями, которые имели отношение к предыдущему содержимому? Каждый раз, когда я нажимаю, я загружаю новые сценарии, не удаляяпоследние.

Как правильно удалять / управлять своими сценариями?

спасибо, Алон

Ответы [ 4 ]

1 голос
/ 15 декабря 2011

Гурунг прав насчет обработчика событий, но в jQuery 1.7 метод .live () устарел. Вместо этого используйте .on (), чтобы присоединить обработчики событий.

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

1 голос
/ 15 декабря 2011

Я не уверен, понял ли я ваш вопрос.Вы ожидаете что-то вроде

$("div#content").html(""); // deleting existing data
$("div#content").html(new_data); //loading new data
1 голос
/ 15 декабря 2011

jQuery связывает события с объектами DOM (divs) в этом случае, когда они вызываются. Это означает, что он ищет элемент с заданным идентификатором, а затем связывает его. Так как Edit1 и Edit2 не существуют при запуске сценария, они не связаны.

Вы можете пытаться связывать их каждый раз, когда меняете их идентификатор.

function rebind() {
    $('#content').click(function(){});
    $('#Data1').click(function(){});
    $('#Data2').click(function(){});
}

Вызывайте это всякий раз, когда вы загружаете новый контент в div.

0 голосов
/ 15 декабря 2011

Может просто использовать функцию .live().

Описание: Присоединить обработчик событий для всех элементов, которые соответствуют текущему селектору, сейчас и в будущем.

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