我在网页中有一个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
}
}
答案 0 :(得分:3)
您在此处所做的是将mousedown事件绑定到页面上的每个元素。这将是资源密集型的,不应该是必要的。此外,由于它在任何地方都有约束力,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
});
一些可能有用的东西
答案 1 :(得分:1)
尝试
$('*').on('mousedown', function (e) {
var elementClicked = e.target.nodeName;
console.log("element: " + elementClicked)
})