选择触发事件在 jQuery 中不起作用

发布于 2024-10-31 07:44:15 字数 450 浏览 0 评论 0 原文

我有以下功能:

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');   

});      

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

这段代码有什么问题吗?或者有人有触发此事件的建议吗?

I have the following function:

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');   

});      

I am attempting to trigger the change event on the select and it seems this is not working. Another thing to note is there is also prototype code used on this page that effects these selects. There are other elements on the page that are effected by the change event on the page.

Is there any issues with this code? Or does anyone have a recommendation to trigger this event?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

本王不退位尔等都是臣 2024-11-07 07:44:15

它不会出现任何问题,但执行状态也取决于 html。也许你也应该发布一些 html 示例。
至于js,还可以改进:
使用 $(selector).eq(i) 方法而不是 $($(selector).get(i))
这是应该在第一个“select.selectClass”项上触发更改事件的函数:

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);

it doesn't present any problem, but the execution status depends on the html as well. Maby you should post some html sample as well.
As for the js, it can be improved :
use the $(selector).eq(i) method instead of $($(selector).get(i)).
this is the function that should trigger the change event on the first 'select.selectClass' item:

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

now it depends on you when you call it.You can bind it to be triggered when you click an element : jQuery(element).click(triggerChange);.

不如归去 2024-11-07 07:44:15

我认为通过将更改事件绑定到一个通用函数,然后在您想要的任何上下文中正常调用该函数,可以轻松解决您的问题。

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

function fred(e) {
//do stuff
}

...

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

I think your issue is easily solved by binding the change event to a common function and then just call that function normally in whatever context you want.

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

function fred(e) {
//do stuff
}

...

function someotherstuff() {
    fred(); //fires same behavior as the change event.
}
窗影残 2024-11-07 07:44:15

这个 jQuery("el").click(function() { 不会触发任何事件。如果您有一个元素设置为名为 el 的变量,则需要使用 jQuery(el) .click(function(){。如果您的目的是为选择选项更改时设置事件处理程序,请使用: jQuery("#yourSelectsIDHere").change(function(){ /* do您的事件内容在这里 */}); 要触发更改事件,请使用 jQuery("#yourSelectsIDHere").trigger("change");

This jQuery("el").click(function() { won't trigger any events. If you have an element set to a variable named el you need to use jQuery(el).click(function(){. If your intent is to set up an event handler for when the select option changes use: jQuery("#yourSelectsIDHere").change(function(){ /* do your event stuff here */});. To trigger the change event use jQuery("#yourSelectsIDHere").trigger("change");

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文