请帮助解决以下问题。 需要对特定元素执行单击,但需要使用偏移量。
如果我使用标准点击 - element.click(),则会点击元素左上角的点击:
但我需要点击这里:
我可以点击元素+偏移量吗? 像这样的东西 -
element.click().offset('top: 32, left: 32')
P.S。 Ssory为我的英文。
答案 0 :(得分:2)
element.click()
并假设你正在使用jQuery。你想要的是jQuery不可能,它不能为事件设置偏移参数,你必须使用原生的javascript。clientX / clientY
和pageX / pageY
。两者都描述了点击发生时鼠标指针的位置。clientX: 0, clientY: 0
,因此它出现在文档的左上角,而不是元素。clientX / clientY
设置为元素相对于文档的位置。您可以使用.getBoundingClientRect()
找到元素位置。.left / .top
中的位置是元素topLeft角的坐标。在活动中使用它们点击它的topLeft角落。width / height
。如果将其中一半添加到x, y
,则会获得元素中心的坐标。在事件中使用它会在其中心执行单击。function clickOnElem(elem, offsetX, offsetY) {
var rect = elem.getBoundingClientRect(),
posX = rect.left, posY = rect.top; // get elems coordinates
// calculate position of click
if (typeof offsetX == 'number') posX += offsetX;
else if (offsetX == 'center') {
posX += rect.width / 2;
if (offsetY == null) posY += rect.height / 2;
}
if (typeof offsetY == 'number') posY += offsetY;
// create event-object with calculated position
var evt = new MouseEvent('click', {bubbles: true, clientX: posX, clientY: posY});
elem.dispatchEvent(evt); // trigger the event on elem
}
您可以按如下方式使用它;
var el = document.getElementById("myElem");
clickOnElem(el); // clicks on topLeft corner
clickOnElem(el, 'center'); // clicks on elements center
clickOnElem(el, 30, 40); // clicks inside element, 30px from left and 40px from top
答案 1 :(得分:1)
这是最好的方法:
function func(){
alert("Circle clicked!")
}

div{
border-radius: 100000px;
width: 100px;
height: 100px;
background-color: red;
cursor: pointer;
}

<div onClick="func()"></div>
&#13;