第一次尝试时链接点击事件未触发按钮点击事件(仅限IE)。第二次点击工作。
这是推动我疯了。我在我的页面上有一个在colorbox中打开的div。当用户点击在div的链接之一,它触发一个事件的代码(见下文),应依次填充隐藏字段,然后单击服务器按钮后面运行一些代码。第一次尝试时链接点击事件未触发按钮点击事件(仅限IE)。第二次点击工作。
问题是,在IE(9),它不会点击第一个尝试的服务器按钮(是的,它确实去到客户端点击事件)。奇怪的是,它似乎在Chrome和FF中工作正常。
$(document).on('click', '.link', function (e) {
e.preventDefault();
var thisID = $(this).attr('href').replace('#ca', '');
$("#hiddenField").val(thisID);
$("#button1").submit();
});
这可能是值得一提的是,在在颜色框打开DIV的链接是动态填充。但是这应该会影响链接上的点击事件。
任何帮助,将不胜感激。
e=e?e:window.event;
if($.browser.msie)
{
e.returnValue=false;
e.cancelBubble=true;
}
else
{e.preventDefault();}
试试这个:
$(document).ready(function() {
$('.link').click(function (e) {
e.preventDefault();
var thisID = $(this).attr('href').replace('#ca', '');
$("#hiddenField").val(thisID);
$("#button1").submit();
}
)});
对不起,这不起作用。现在甚至没有进入链接点击事件,更不用说服务器按钮了。 :( – Deadlykipper
对不起,最后一行出现语法错误,现在试试吧 –
如果链接是按照OP的说法动态填充的话,这不会解决问题,您需要使用.on()作为OP正在尝试,因为它允许动作“泡泡”到动态创建的dom元素 – bpeterson76
这里是[小提琴] [1]你的答案。它在所有浏览器上工作正常。
我似乎没有任何问题与您的代码
刚搬进来的文件准备好功能
没有链接,我认为这可能与colorbox有关,它以前从未发生过,有点困惑 – Deadlykipper
代码看来,适当的形式将触发按钮与.trigger()
提交,而不是提交。根据定义,没有任何附加参数的.submit()镜像.trigger('submit')这是你在表单上运行的内容,而不是按钮。
例如:$("#button1").trigger("click");
这里是documentation on .trigger()
对我来说,提交表单更合乎逻辑的方式将完全绕过按钮和.submit()的实际形式本身。有可能是你为什么不这样做的原因,但似乎更直接,而不是依靠用户可能被“搞砸了”的元素。
嗨,对于迟到的回应感到抱歉 - 我很忙,我会给你一个回复,回复你。 – Deadlykipper
嗨,你能解释一下这是应该实现的?我不确定我得到了这是做什么。干杯。 – Deadlykipper
您防止在IE中点击链接事件,此事件不会停止冒泡,即继续监听器第一个事件。对于ff和crrome,你可以用e.preventDefault()来防止这种行为。我认为匹配更好使用$(“#button1”)。click(); –