我刚接到一个问题回答并陷入了另一个陷阱!
我有一个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无法看到这一点,但我被告知要通过类来引用这些元素,这些类已经起作用,但仅限于此。
我还能尝试什么,问题是什么?
我真的很感激任何帮助。
全部谢谢
答案 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();