如何在下拉列表中以相同的值触发jQuery更改事件

时间:2015-01-23 10:48:24

标签: javascript jquery html javascript-events

即使用户选择相同的值,如何每次都触发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>

Link to fiddle

5 个答案:

答案 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);

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

答案 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);

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