当我触发一个事件时,它会在jQuery中输入几次而不是一次

Sna*_*yes 1 html javascript jquery

我有以下HTML代码,简单的一个:

<input type="text" />
<input type="hidden" />
<input type="button" value="ok" />
Run Code Online (Sandbox Code Playgroud)

和javascript:

$(function(){
    $(":text").on("keyup", function(){
        $(":hidden").val($(this).val()).trigger("propertychange");
    });

    $(":hidden").on("propertychange", function(){
       alert($(this).val()); 
    });

    $(":button").on("click", function(){
        alert($(":hidden").val()); 
    });
});
Run Code Online (Sandbox Code Playgroud)

当我在输入类型中键入内容时,text警报会显示几次而不是一次.

怎么解决?

jsFiddle.(我用Firefox检查过)

hai*_*770 7

您的:hidden选择器实际上匹配8个元素(包括<head>,<title><script>)而不是仅隐藏输入,因此propertyChange为每个元素引发事件.

从jQuery 隐藏文档:

在某些浏览器中:隐藏包括头部,标题,脚本等...

试试这个:

$("input:hidden").on("input propertychange", function(){
   alert($(this).val()); 
});
Run Code Online (Sandbox Code Playgroud)