繁体   English   中英

jQuery .trigger("change") 不工作

[英]jQuery .trigger("change") not working

我无法让.trigger("change")工作。 有谁知道为什么?

jQuery(document).ready(function () {

    jQuery("select[id='DROPDOWNID']").change(function () {

        var selectedIndex = jQuery("select[id='DROPDOWNID']").prop('selectedIndex');

        switch (selectedIndex) {
            case 0:
                hideVarforProspekt();
                break;
            case 1:
                hideOrdervarde();
                break;
            case 2:

                break;
            case 3:
                hideSektor();
                break;
        }
    });

    ** jQuery("select[id='DROPDOWNID']").trigger("change"); **


    function hideVarforProspekt() {
        jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide();
    }

    function hideSektor() {
        jQuery("table[id='IDFROMSHAREPOINT']").closest('tr').hide();
    }

    function hideUppskOrder() {
        jQuery("input[id='IDFROMSHAREPOINT']").closest('tr').hide();
    }
});

应在调用.trigger('change').change()之前定义更改事件处理程序

下面是2个场景。

场景 1:更改事件在定义之前被调用。

    $(document).ready(function() 
    {
       $('#selector').change();   or  $('#selector').trigger('change');
       $('#selector').on('change', function(){

        });
    });

场景 2:在调用它之前定义更改事件处理程序

$(document).ready(function() 
{
    $('#selector').on('change', function(){

    });
    $('#selector').change();   or  $('#selector').trigger('change');
});

对我来说,当我使用方案 2 时,问题已解决。 希望这可以帮助!!

有时不需要使用触发器:

// use just jQuery("#DROPDOWNID") instead
var select = jQuery("select[id='DROPDOWNID']");

// placing the handler in separate function
var changeHandler = function () {
    var selectedIndex = select.prop('selectedIndex');
    switch(selectedIndex) {
        case 0:
            hideVarforProspekt();
        break;
        case 1:
            hideOrdervarde();
        break;
        case 2:

        break;
        case 3:
            hideSektor();
        break;
    }
}

// cache your jQuery selectors. It's a good practice
// and improves the readability
select.change(changeHandler);

// triggering
changeHandler();

这是使用 id 语法的工作版本:

$(document).ready(function () {
  $('select[id=car]').change(function () {
      alert("change: " + $(this).val());
  });

  $("#car").trigger('change');
});

JSFiddle

$('#selector').change();   

或者

$('#selector').trigger('change'); 

//第二个对我有用。 但是您应该在更改事件的定义之后调用它

用这个:

jQuery("#DROPDOWNID").trigger("change");

你能检查给定的链接演示

HTML 代码

<select id="car">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

jQuery代码

$(document).ready(function(){
  $("#car").change(function(){
    alert("change");
  });

    $("#car").trigger('change');
});

结果 :

它发出警报

从所有选择器中删除id=并将其替换为#selected id

.change()事件一直等到输入字段失去焦点,因此在您单击或跳出该字段之前不会触发它。

所以你可以像这样在.change() .blur()事件:

     var $element = jQuery("select[id='DROPDOWNID']");
     $element.change(function () { ... });
     $element.blur();

或者您可以使用另一个事件来代替.change() ,例如.keyup().paste()等。

我很惊讶没有人提到这一点,但是当jQuery("select[id='DROPDOWNID']").trigger("change")没有完成这项工作时(比如尝试使用 Tampermonkey 模拟角度代码的变化时) jQuery("select[id='DROPDOWNID']")[0].dispatchEvent(new Event('change'))确实

试试这个,它应该工作

$('#selector').change(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM