20

我不能.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();
    }
});
4

7 回答 7

50

更改事件处理程序应在调用.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 时,问题已解决。希望这可以帮助!!

于 2016-05-19T08:45:37.893 回答
3

有时不需要使用触发器:

// 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();
于 2013-09-09T07:46:03.460 回答
2

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

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

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

JSFiddle

于 2015-04-28T15:32:54.463 回答
2
$('#selector').change();   

或者

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

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

于 2021-04-27T12:56:48.540 回答
0

用这个:

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

于 2013-09-09T07:45:03.087 回答
0

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

所以你可以像这样.blur()在事件之后添加事件.change()

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

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

于 2016-03-02T16:25:36.093 回答
-1

试试这个,它应该工作

$('#selector').change(); 
于 2016-12-26T05:07:54.380 回答