2011-04-27 85 views
11

我有一滴往下注册这样的jQuery插件:如何选择jQuery下拉val()AND触发事件?

$('#country').linkToStates('#province'); 

我手动选择下拉是这样的:

$('#country').val('United States'); 

但onchange事件不会触发.linkToStates()这是之前注册的。所以它看起来像val()只改变下拉位置,但实际上并不改变onchange事件。谁能帮忙?

顺便说一句,这是如果它可以帮助注册的代码:

$.fn.extend({ 
     linkToStates: function(state_select_id) { 
     $(this).change(function() { 
     var country = $(this).attr('value'); 
     $(state_select_id).removeOption(/.*/); 
     switch (country) { 
      case 'Canada': 
      $(state_select_id).addOption(canadian_provinces, false); 
      break; 
      case 'United States': 
      $(state_select_id).addOption(us_states, false); 
      break; 
      default: 
      $(state_select_id).addOption({ '' : 'Please select a Country'}, false); 
      break; 
     } 
     }); 
    } 
    }); 

回答

22

试试这个:

$('#country').val('United States').trigger('change'); 

甚至

$('#country').val('United States').change(); 

你可以阅读更多关于.trigger()here.change()here

+0

不知何故,在不触发更改事件每次。这是我的代码。 'var jQuery2 = jQuery.noConflict(); \t jQuery2('#shipping_method_0')。val('flat_rate')。change();'。你能帮忙吗? – Vidhi 2014-11-12 05:52:03

0

你可以只把你的代码调用onChanged到一个单独的函数,然后调用它,你改变数值后。

相关问题