triggerHandler()会影响所有匹配的元素

时间:2012-11-10 08:28:54

标签: jquery triggers w3c jquery-triggerhandler

关注w3schools

  

triggerHandler()方法类似于trigger()方法。除了它不会触发事件的默认行为(如表单提交)和它只会影响第一个匹配的元素。

但我用2输入标签测试并使用

$("input").triggerHandler("select");

然后他们都受到了影响。这是我的代码:

HTML:

<input type="text" name="FirstName" value="Hello World" />
<input type="text" name="FirstName" value="Hello" />

JavaScript的:

$(document).ready(function(){
  $("input").select(function(){
    $("input").after(" Input select event occured!");
  });
  $("button").click(function(){
    $("input").triggerHandler("select");
  });
});

Live Copy on jsFiddle

1 个答案:

答案 0 :(得分:3)

仅在第一个元素上触发事件。但是,您的代码在发生这种情况时会输出两个行:

$("input").after(" Input select event occured!");

该行,运行一次,将在所有匹配的input元素后追加文本。由于有两个匹配元素,即使事件仅针对第一个元素触发,也会看到该行两次。

只需将该行更改为

即可
$(this).after(" Input select event occured!");

...并且您将看到仅在触发事件的元素之后附加的输出。 Live Copy,只需更改上述内容并删除在页面上包含MooTools的选项。