Тот же Div называется Ошибка в Jquery - PullRequest
1 голос
/ 04 июня 2009

Я новичок в JQuery. У меня есть

<div id='field1'>  </div>

Я имею в виду это дважды в моем коде. Но каждый раз это относится к одной и той же 1-й ссылке.

например. Я изменяю содержимое DIV изначально со значением

$("#field1").change(function (){alert('hi')});

После того, как какой-то фрагмент кода внутри друг друга щелкнул, у меня

$("#field1").change(function(){alert('again')});

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

Но этот второй относится к первому. Как я могу исправить это? Я даже использовал $(this) во второй смене. Один и тот же Ajax вызывается дважды .. JQuery

Ответы [ 5 ]

7 голосов
/ 04 июня 2009

То, что вы пытаетесь сделать, не ясно из того, как вы задали вопрос. Из того, что вы вставили в код, я бы предположил, что вы пытаетесь изменить событие onChange в div. Итак, для начала у вас есть:

$("#field1").change(function (){alert('hi')});

И когда # field1 изменяется, вы хотите запустить функцию, которая вызывает оповещение ('привет')

Позже у вас есть кнопка, которая запускается:

$("#field1").change(function(){alert('again')});

И вы хотите, чтобы изменения в # field1 вызывали функцию, которая вызывает оповещение («снова»)

Но то, что вы получаете, когда происходит изменение, - это окно с надписью «hi».

То, что происходит, так это то, что и предупреждение («привет»), и предупреждение («снова») связываются с событием изменения. Если вы хотите заменить событие изменения, вам сначала нужно использовать функцию unbind (type, fn) .

Если вы хотите, чтобы они оба стреляли, вам нужно «вернуть ложь»; от ваших функций изменения.

2 голосов
/ 04 июня 2009

Если вы имеете в виду, что у вас есть два DIV с одинаковым идентификатором, это фактически недопустимый HTML. Идентификаторы должны быть уникальными для каждого документа.

0 голосов
/ 04 июня 2009

Я думаю, что jQuery при использовании идентификаторов возвращает только один элемент.

Если вы должны использовать одно и то же имя селектора (которое, как правильно сказал Ритмис, использование нескольких идентификаторов с одним и тем же именем недопустимо в HTML), то переход на селектор класса будет лучшим.

Затем вы можете использовать функциональность : eq () в jQuery

Для нацеливания на ваш первый div вы можете использовать:

jQuery('.field:eq(0)')

и затем нацеленность на ваше второе использование div:

jQuery('.field:eq(1)')

Помните, что они возвращаются в виде массива, поэтому 0 = первый, 1 = второй и т. Д. *

0 голосов
/ 04 июня 2009

Вы пропустите точку:

 $("#field1").change(function (){
    alert('hi');
 });

И вы не можете использовать одно и то же имя дважды.

0 голосов
/ 04 июня 2009

селектор # выбирает элемент с идентификатором # first1 в HTML-документе, который будет первым div, поскольку идентификаторы должны быть уникальными.

Вы можете использовать класс и. селектор, чтобы выбрать оба div или альтернативно дать другому div другое имя Информация о селекторах в jQuery

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