即使用户选择相同的值,如何每次都触发jQuery更改事件?我需要刷新效果,例如,如果用户选择律师并提醒hello
,则用户再次从下拉菜单中选择律师,它应该提醒hello
。我怎样才能实现它?以下是代码。
的jQuery
function filterPullDown () {
alert('hello');
}
$(".businessTypePullDown").change(filterPullDown);
HTML
<select class="businessTypePullDown">
<option value="" disabled selected>Business Type</option>
<option value="1">General</option>
<option value="2">Lawyer</option>
<option value="3">Software Development</option>
<option value="4">Auto-repair</option>
</select>
答案 0 :(得分:2)
这应该有效。它是标志和点击事件的组合。当您单击选项时,它将始终被触发。
<select class="businessTypePullDown">
<option value="" disabled selected>Business Type</option>
<option value="1">General</option>
<option value="2">Lawyer</option>
<option value="3">Software Development</option>
<option value="4">Auto-repair</option>
</select>
(function () {
var filterPullDown = function() {
alert('clicked');
}
var flag = false;
$(".businessTypePullDown").click(function () {
if (flag) {
filterPullDown()
}
flag = !flag;
});
$(".businessTypePullDown").focusout(function () {
flag = false;
});
}());
答案 1 :(得分:2)
我认为@MrUpsidown刚刚在不知情的情况下回答了这个问题!为什么不在选项元素本身而不是外部select元素属性上添加事件处理程序。
回到超人的代码,请使用:
$(".businessTypePullDown option").on("click", filterPullDown);
这将调用&#39; filterPullDown&#39;无论是否选择了相同的值,每次都有功能。
答案 2 :(得分:0)
使用
$(".businessTypePullDown>option:not(:disabled)").click(filterPullDown);
答案 3 :(得分:0)
希望这有助于某人。
因此,一旦用户点击选择,以下代码将使禁用选项成为选择,从而模仿用户正在更改其选择的状态,以及.change()
上的<select>
事件只有在选择选项发生变化时才会触发(不保持不变)并且用户无法选择已禁用的选项,这样可以确保更改事件始终发生,然后您可以将回调附加到.change()
事件选择。
$('select').on('click', function () {
$(this).find('option').attr('selected', false);
$(this).find('option:disabled').attr('selected', true);
// replace options:disabled to options:first-child
// if you don't want to pollute the select options.
});
使用以下html:
<select title="Sort By">
<option disabled>Sort By</option>
<option selected>Name</option>
<option>Date</option>
<option>Price</option>
</select>
答案 4 :(得分:-1)
简单地
function filterPullDown () {
console.log(this.selectedIndex);
}
$(".businessTypePullDown").on('click', filterPullDown);