JQuery:选择跟踪的元素更改但不是它们的值!

时间:2009-10-11 20:48:09

标签: javascript jquery

我刚接到一个问题回答并陷入了另一个陷阱!

我有一个lightbox的表单,我想跟踪select元素中的每个更改。当他们改变时我想得到每个选择元素的值。我试图做以下事情:

$('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 个答案:

答案 0 :(得分:1)

两件事(尝试第一件然后第一件+第二件):

您正在选择选择,而不是选项,因此请尝试选择所有选定的选项

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

其次,您选择的val()将返回该选项的value属性。如果您想要文本,请选择text()

答案 1 :(得分:1)

您遇到问题的原因是您有select个元素的两个(或更多)副本。当你调用$('select.hst').val()时,jQuery会返回它找到的第select个元素的值hst,这不是你想要的值。

您必须找到一种方法将jQuery选择器范围限定为仅显示可见灯箱div中的元素。如果灯箱div具有id或其他一些唯一属性,请使用它来调整form / select / span元素的范围。

如果灯箱div具有id“lightbox”:

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

使用表格的选择器:

$('#lightbox select.hst').val();