如何在具有相同值的下拉菜单上触发 jQuery 更改事件

How to trigger jQuery change event on dropdown with same value

即使用户 select 的值相同,我如何才能每次都触发 jQuery 更改事件?我需要刷新效果,例如,如果用户 select Lawyer 并且它提醒 hello 然后用户 select Lawyer 从下拉列表中,它应该提醒 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>

Link to fiddle

使用

$(".businessTypePullDown>option:not(:disabled)").click(filterPullDown);

http://jsfiddle.net/68k31zct/14/

简直

function filterPullDown () {  
  console.log(this.selectedIndex);
}

$(".businessTypePullDown").on('click', filterPullDown);

http://jsbin.com/cunoxawemu/1/edit?js,console,output

这应该有效。它是标志和点击事件的组合。当你点击一个选项时它总是会被触发。

<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;
    });
}());

希望这对某人有所帮助。

因此,一旦用户单击 select,以下代码将使禁用选项成为 selection,从而模拟用户正在更改其 selection 的状态,并且由于 <select> 上的 .change() 事件仅在 selection 选项更改(不保持不变)并且用户不能 select 禁用选项时触发确保更改事件始终发生,然后您可以将回调附加到 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>

我觉得@MrUpsidown 在不知情的情况下刚刚回答了这个问题!为什么不在选项元素本身而不是外部 select 元素属性上添加事件处理程序。

回到超人的代码,使用这个:

$(".businessTypePullDown option").on("click", filterPullDown);

这将每次调用 'filterPullDown' 函数,无论是否 selected 相同的值。