选择不在jQuery中工作的触发器事件

时间:2011-04-07 16:34:13

标签: javascript jquery events select

我有以下功能:

jQuery("el").click(function() {

    var index = jQuery(this).index(),
    select = jQuery('select.SelectClass option').get(index + 1),
    $select = jQuery(select);
    $select.attr('selected', 'selected');
    jQuery(jQuery('select.selectClass').get(0)).trigger('change');   

});      

我试图在select上触发更改事件,但似乎这不起作用。另外需要注意的是,此页面上还使用了原型代码来影响这些选择。页面上还有其他元素受页面上的更改事件影响。

此代码有任何问题吗?或者是否有人建议触发此事件?

3 个答案:

答案 0 :(得分:1)

它没有任何问题,但执行状态也取决于html。 Maby你也应该发布一些html样本。
至于js,它可以改进: 使用$(selector).eq(i)方法代替$($(selector).get(i))
这是应该在第一个'select.selectClass'项上触发change事件的函数:

function triggerChange() {
    var index = jQuery(this).index(),
    $select = jQuery('select.SelectClass option').eq(index + 1);  
    $select.attr('selected', 'selected');
    jQuery('select.selectClass:first').trigger('change');   
}

现在,当你调用它时,它取决于你。当你点击一个元素时,你可以绑定它来触发:jQuery(element).click(triggerChange);

答案 1 :(得分:0)

我认为通过将更改事件绑定到公共函数然后只需在任何上下文中调用该函数,就可以轻松解决您的问题。

$('#foo').change(fred);
$('#bar').change(fred);

function fred(e) {
//do stuff
}

...

function someotherstuff() {
    fred(); //fires same behavior as the change event.
}

答案 2 :(得分:0)

jQuery("el").click(function() {不会触发任何事件。如果您将元素设置为名为el的变量,则需要使用jQuery(el).click(function(){。如果您的目的是为select选项更改时设置事件处理程序,请使用:jQuery("#yourSelectsIDHere").change(function(){ /* do your event stuff here */});。要触发更改事件,请使用jQuery("#yourSelectsIDHere").trigger("change");