我在网页中有一个 js 函数,可以捕获点击的位置。我必须以一种能够识别页面是否包含表单元素的方式来实现它,如果是,则检查我记录的点击是否是在随机的表单元素上进行的。 我起身检查表单并了解其元素,但我不知道如何检查单击是否是在单个元素上进行的:
$('*').on('mousedown', function (e) {
// make sure the event isn't bubbling
if (e.target != this) {
return;
}
// do something with the click somewhere
// for example, get the coordinates:
x = e.pageX;
y = e.pageY;
pa = $(location).attr('href');
//Window dimension
var width = $(window).width();
//var width = $getWidth();
var height = $(window).height();
//Check if page contain a form
var elementF = document.querySelectorAll('form');
var fname = '';
var elements = '';
for (var i=0; i<elementF.length; i++){
fname = elementF[i].id;
elements = document.forms[fname].elements;
for (x=0; x<elements.length; x++){
//Now i need to check if element is clicked or not
}
}
最佳答案
您在这里所做的是将 mousedown 事件绑定(bind)到页面上的每个元素。这将是资源密集型的并且不是必需的。另外,由于它到处都是绑定(bind)的,所以 if (e.target !== this){ return; }
确实可以防止每当您将鼠标放在某物上时它都会触发一百万次,但也可以防止它冒泡。只需让它冒泡并使用 e.target
和 e.currentTarget
来区分东西即可。不应该有任何理由执行 $('*').on("mousedown")
为什么你不能这样做?
$("form").on("click", function(e){
// e.currentTarget will be the form element capturing the click
console.log( $(e.currentTarget).html() );
// e.target will be whatever element you clicked on
// so you can do whatever you want with it
console.log( $(e.target).text() );
// All your handler code here
});
一些可能有用的东西
关于javascript - 检查 onclick 事件触发的表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713853/