gpt4 book ai didi

更改布局的 Javascript/jQuery focusout 事件导致 click 事件不触发

转载 作者:行者123 更新时间:2023-11-29 15:41:30 28 4
gpt4 key购买 nike

我有一个字段,当您将焦点放在它上面时,它会改变页面的布局。我在页面上也有提交表单的按钮。

如果我进入我的字段并键入一个值,然后单击按钮,按钮单击事件永远不会触发。这似乎是因为布局在 触发点击事件之前发生了变化,这意味着按钮改变了位置。当点击事件触发时,它是在空白区域触发的,而不是按钮。

这是问题的 jsfiddle:http://jsfiddle.net/xM88p/

我想出了一种方法来为 IE 解决这个问题,但经过广泛研究后,我无法在 FF/Chrome 中找到/访问相同的对象:

//only works in IE

if(event.originalEvent.toElement){
$("#"+event.originalEvent.toElement.id).click();
}

最佳答案

http://jsfiddle.net/xM88p/2/

使用 mousedown 而不是 click:

$("#btn_test").on('mousedown', function (event){
alert("clicked!");
});

$('#test').focusout(function (event){
$('<p>Test</p>').insertAfter(this);
});

编辑

好的,我对事件处理程序有了更多的创意。 The new solution跟踪 mousedown/mouseup 事件以及点击的位置。它使用这些值来检查鼠标松开是否应该执行警报。

var testClicked = false;
var lastX, lastY;

$(document).on('mouseup', function (event) {
if (testClicked === true && lastX === event.clientX && lastY === event.clientY) {
alert("clicked!");
}
testClicked = false;
lastX = null;
lastY = null;
});

$("#btn_test").on('mousedown', function (event){
testClicked = true;
lastX = event.clientX;
lastY = event.clientY;
});

$('#test').focusout(function (event){
$('<p>Test</p>').insertAfter(this);
});

关于更改布局的 Javascript/jQuery focusout 事件导致 click 事件不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18339089/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com