为什么在.change(func())之后额外的.change()或触发器('change');

时间:2014-09-02 01:48:59

标签: jquery triggers onchange

我们看到以下两个示例都在.change(funct(//做某事))之后实现了额外的.trigger('更改')。我摆脱了jsfiddle中第一个例子的change(),它仍然有效。我不知道为什么他们最终会手动触发变化?

http://api.jquery.com/change/ http://api.jquery.com/selected-selector/

  <!doctype html>
  <html lang="en">
  <head>
  <meta charset="utf-8">
  <title>change demo</title>
  <style>
  div {
    color: red;
  }
  </style>
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<select name="sweets" multiple="multiple">
  <option>Chocolate</option>
  <option selected="selected">Candy</option>
  <option>Taffy</option>
  <option selected="selected">Caramel</option>
  <option>Fudge</option>
  <option>Cookie</option>
</select>
<div></div>

<script>
$( "select" )
  .change(function () {
    var str = "";
    $( "select option:selected" ).each(function() {
      str += $( this ).text() + " ";
    });
    $( "div" ).text( str );
  })
  .change(); // why this line? 
</script>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

我猜你在谈论:

$(function() {
    $('.selector').change(function() {
        //do something
    }).change(); // <<======
});

页面加载时,最后.change()会触发change事件。逻辑是,如果.selector元素具有您希望以某种方式使用的默认值,就像它的值更改一样,则会在页面加载时触发change事件。 你可以对任何活动做同样的事情。

DEMO

$(function() {
    $('.city').change(function() {
        alert( this.value );
    }).change();
});
  1. 当演示加载时,由于option
  2. ,它会提醒select元素中的第一个.change()
  3. 要验证,请移除.change(),然后点击“运行”;除非您选择其他城市,否则不会发出警报。