JQuery: выбранные элементы отслеживаются, но не их значения! - PullRequest
0 голосов
/ 12 октября 2009

Я только что получил ответ на вопрос и попал в другую ловушку!

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

$('select.htt, select.hst').live('change', function() {
    var channels = parseInt($('select.hst').val(), 10) * parseInt($('select.htt').val(), 10);
    alert($('select.hst').val() + ' and ' + $('select.htt').val());         
    $('span.yellow2').html(channels);
});

Однако значения всегда одинаковы, т. Е. Первая опция в каждом раскрывающемся списке, хотя есть и другие выбранные опции. Я предполагаю, как кто-то объяснил ранее. Лайтбокс, который я использую, берет копию этих элементов и вносит в них изменения, и JQuery этого не видит, но мне сказали, что ссылаться на элементы можно с помощью классов, которые работали, но только до этого момента.

Что еще можно попробовать и в чем проблема?

Я действительно ценю любую помощь.

Спасибо всем

Ответы [ 2 ]

1 голос
/ 12 октября 2009

Причина вашей проблемы в том, что у вас есть две (или более) копии ваших select элементов. Когда вы вызываете $('select.hst').val(), jQuery возвращает значение первого элемента select с классом hst, который он находит, что не является требуемым значением.

Вам нужно будет найти способ настроить селекторы jQuery на только элементы внутри видимого лайтбокса div . Если у элемента лайтбокса есть идентификатор или какой-либо другой уникальный атрибут, используйте его для выделения элементов формы / выбора / диапазона.

Если у элемента лайтбокса есть идентификатор "лайтбокс":

<div id="lightbox">
...
</div>

Используйте селекторы вида:

$('#lightbox select.hst').val();
1 голос
/ 12 октября 2009

Две вещи (попробуйте первое, затем первое + второе):

Вы выбираете выбрать, а не вариант, поэтому попробуйте выбрать все параметры, которые выбраны

   $('select.hst option:selected').val()

Во-вторых, вы выбираете val(), который возвращает атрибут значения параметра. На всякий случай, если вы хотите текст вместо этого, выберите text().

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