jQuery在IE浏览器中的触发器无法工作。为什么?

3
$('#XynBp0').find('input').each(function(){
    if ($(this).attr('value') == 'Cancel'){
        $(this).trigger('click');
    }
});

在IE7中无法正常工作


1
“不起作用”是什么意思?它能找到输入元素吗?当您遍历每个输入元素时,$(this).attr('value') 包含什么?还是触发器没有触发? - Pekka
奇怪。你能展示一下相关的HTML代码吗? - Pekka
只是让你知道,你可以在一行代码中完成它:$("#XynBp0 input[value='Cancel']").trigger('click'); - mpen
3
@syn4k 还可以看看这条评论:http://api.jquery.com/trigger/#comment-48277488 使用 .trigger('click') 不会触发原生的点击事件。也许你需要使用 @Mouhannad 的解决方法。 - Pekka
@syn4k - 在这里发布相关的代码。在jsFiddle上创建一个最小化的不良行为副本,并链接到该副本。 - Peter Ajtai
显示剩余4条评论
4个回答

2

很奇怪,但尝试创建自定义事件

$('#XynBp0 input').bind('custom',function(){
 //code
})


$('#XynBp0').find('input').each(function(){
    if ($(this).attr('value') == 'Cancel'){
        $(this).trigger('custom');
    }
});

这个可行吗?


不,谢谢。我尝试了这个并在自定义函数中放置了一个警报,但没有任何警报。如果在IE7中失败,那么在任何浏览器中都能正常工作,这非常奇怪。 - user420095
1
也许如果您分享剩余的代码,我们可以给出更好的答案! - Mouhannad

2
< p > $.click()(或$.trigger('click'))并不模拟鼠标点击,它会触发绑定到该元素的任何onclick事件。如果您没有为要查找的输入分配onclick事件,则什么也不会发生。

听起来你正在尝试使用传统的提交按钮提交表单(例如<input type="submit" value="Cancel">)。如果是这种情况,您可能需要使用$(yourform).submit()提交表单,并处理发送到服务器的数据以模拟单击“取消”按钮。


3
谢谢Jason,但这在Firefox和Chrome中完美运行。 - user420095

0

它是否包含在DOM准备事件中?如果您提供更多代码可能会有所帮助。

$(function () {

    $('#XynBp0').find('input').each(function () {
        if ($(this).attr('value') == 'Cancel') {
            $(this).trigger('click');
        }
    });

});

0

你的代码片段没有任何意义,你在点击已取消的输入框吗?

以下是需要清理的一些代码:

$('input','#XynBp0').each(function () {
  var $this = $(this);
  if ( this.value === 'Cancel' ) { //Don't need jQuery here
    $this.trigger('click');  //Probably don't need it here either
  }
});

click 事件到底是做什么的?如果你想要提交表单,请使用 form.submit();


再次强调,这在所有其他浏览器中都可以正常工作。 它非常合理。 代码会在特定的输入框上触发点击事件。 - user420095
你能发布HTML和其他代码吗?如果我知道你想做什么,我可以让它在所有浏览器中运行。 - Drew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接