每次使用jQuery选择DropDownList项时都会触发Fire事件

ra1*_*170 34 jquery html-select

我有一个下拉列表: <asp:DropDownList id="dropdownid" runat="server" class=blah"/>

在我的jQuery中,我分配如下的更改事件:

$('#dropdownid').change(function() {......});
Run Code Online (Sandbox Code Playgroud)

现在,当我从下拉列表中选择不同的值时,这是有效的,但是,假设我想再次选择相同的值.(因为我想用相同的值进行另一个调用)所以,当我再次选择它时(不改变值)只需单击下拉列表中的选定值并再次"选择"它,就不会触发任何事件.我必须分配给jquery中的另一个事件吗?什么是解决方法?

RSo*_*erg 28

为了扩展Vincent Ramdhanie的建议,看看做这样的事情.从本质上讲,您最终会得到自己的jQuery函数,可以在其他地方重复使用.

第1步:创建jQuery函数

(function($) {
    $.fn.selected = function(fn) {
        return this.each(function() {
            var clicknum = 0;
            $(this).click(function() {
                clicknum++;
                if (clicknum == 2) {
                    clicknum = 0;
                    fn(this);
                }
            });
        });
    }
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

第2步:确保引用新创建的jQuery Function的文件以供使用:

<script src="Scripts/jqDropDown.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

第3步:利用新功能:

$('#MyDropDown').selected(function() {
    //Do Whatever...
});
Run Code Online (Sandbox Code Playgroud)

原始信息
使用您当前的代码库,从asp:DropDownList中选择相同的值不会触发更改事件.

您可以尝试为.blur事件添加另一个jQuery函数.当控件失去焦点时会触发:

$('#dropdownid').blur(function() {......});
Run Code Online (Sandbox Code Playgroud)

如果它们模糊功能对你不起作用,我会添加一个刷新按钮或其他东西来激发你想要使用的功能.


Vin*_*nie 16

试试这个:

$(document).ready(function(){
 var clicknum = 0;
 $("#dropdownid").click(function(){
    clicknum++;
    if(clicknum == 2){
        alert($(this).val());
        clicknum = 0;
    }
 });
});
Run Code Online (Sandbox Code Playgroud)

首先,您要创建一个变量clicknum来跟踪点击次数,因为您不希望每次用户点击下拉框时触发该事件.第二次单击是用户进行的选择.

如果单击num恰好是2,那么这是第二次单击,因此触发事件并将clicknum重置为0以供下次使用.否则什么都不做.


Ada*_*sek 7

只需将事件处理程序点击到所附的选项控件而不是select:

$('#dropdownid option').click(function() {......});
Run Code Online (Sandbox Code Playgroud)

这只会在您从下拉列表中选择一个选项时触发,无论它是否发生变化.