这是我的代码:
$.each (t.config.industry, function (i, v) {
$(v).change(function () {
console.log("Industry change!");
});
});
t.config.industry
是<select>
ID的数组。 t.config.industry: ["#W2549_Sl", "#W2601_Sl", "#W2654_Sl"]
我在页面上有几个<select>
框,我正在跟踪它们。任何时候任何一个改变我想发射一些东西。
显然,我正在尝试做的不仅仅是console.log,但为了这篇文章,我将其限制在那里。在我的网站上,console.log仅在第一次更改时打印一次。在<select>
下拉菜单的后续更改中,它不会触发。
之前有人见过这个吗?
注意:我根本无法更改HTML标记。
答案 0 :(得分:4)
当多个选择元素的ID不唯一时,我见证了这种行为。为了解决我的问题,我只是删除了id,定义了一个类,并修改了jQuery选择器以使用指定的类。例如:
<select class="some_value" some_id="<%= some[:id] %>">
$(".some_value").change(function() {
var some_id = $(this).attr("some_id");
alert('some_id: ' + some_id);
});
坦率地说,我认为这个行为是jQuery中的一个bug。为什么它应该成功运行一次并在此后失败?
答案 1 :(得分:1)
如果您可以为要监视的每个选择元素添加一个公共类,那么这将极大地简化您的代码。试试这个(on
方法所需的jQuery 1.7):
$(document).on('change','select.monitorme', function() {
console.log($(this).attr('id')+' changed!');
});
$.each (t.config.industry, function (i, v) {
$(v).change(function () {
$(this).addClass('monitorme'); // or just add the class to your markup
});
});
答案 2 :(得分:0)
您需要在#
(您的v
)之前添加id
才能使此选择器正常工作
$.each(t.config.industry, function (i, v) {
$("#" + v).change(function () {
console.log("Industry change!");
});
});
答案 3 :(得分:0)
尝试以HTML
的方式重写它 <select id="main_industry">
<?foreach ($industry as $item ){?>
<option value="<?=$item['id']?>"><?=$item['title']?></option>
<?}?>
</select>
JAVASCRIPT
$('#main_industry').change(function() {
// your stuff here
console.log ($(this).val());
}
答案 4 :(得分:0)
对于asp.net,它正确地在我的项目中工作。
<asp:DropDownList ID="txtvisitname" AutoPostBack="true" class="txtno" AppendDataBoundItems="true"
runat="server" onchange="return selectChange()">
<asp:ListItem Text="--SELECT--" Value="0" />
<asp:ListItem Text="VISIT1" Value="VISIT1" />
<asp:ListItem Text="VISIT2" Value="VISIT2" />
<asp:ListItem Text="VISIT3" Value="VISIT3" />
<asp:ListItem Text="VISIT4" Value="VISIT4" />
<asp:ListItem Text="VISIT5" Value="VISIT5" />
<asp:ListItem Text="Unscheduled VISIT" Value="Unscheduled VISIT" />
</asp:DropDownList>
功能:
selectChange() {
if ($("[id*=txtvisitname]").val() == "Unscheduled VISIT") {
$(".other").show();
} else {
$(".other").hide();
}
}
答案 5 :(得分:-2)
您正在为每个选项设置您的听众。把它放在你的选择上!