jQuery .trigger(“更改”)无效

时间:2013-09-09 07:33:59

标签: javascript jquery

我无法让.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();
    }
});

7 个答案:

答案 0 :(得分:32)

应在调用.trigger('change').change()

之前定义更改事件处理程序

以下是两种情况。

场景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');
});

对于我来说,当我使用scenario2时,问题已修复。希望这会有所帮助!!

答案 1 :(得分: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();

答案 2 :(得分:2)

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

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

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

JSFiddle

答案 3 :(得分:1)

使用了这个:

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

您可以查看给定的链接Demo

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

答案 4 :(得分:1)

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

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

// 第二个对我有用。但是你应该在change事件定义之后调用它

答案 5 :(得分:0)

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

因此,您可以在.blur()事件之后添加.change()事件,如下所示:

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

或者您可以使用其他活动而不是.change(),例如.keyup().paste()

答案 6 :(得分:0)

试试这个,它应该有用

tbl_tool_use