- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题类似于Opening JQuery Ui Dialog in MousePosition ,但是不同之处在于我希望 Jquery 对话框显示在非常靠近被单击的按钮的位置。我当前的问题是,当我设置 position
属性时,使用
$("button.deleteEmailRow").live("click", function (e) {
var target = this
$("#emailAddress").html(this.name); // not imp for my problem
$("#dialog-email-confirm").dialog({
autoOpen: false,
width: 400,
modal: false,
resizable: false,
dialogClass: 'dialogs-only',
buttons: {
"Delete Email Recipient": function () {//snip;
return false;},
"Cancel": function () {//snip;
return false;
}
}
});
$("#dialog-email-confirm")
.dialog('option', 'position', [e.pageX+30, e.pageY])
.dialog('open');
});
但是,当使用以下内容时,它会按预期工作。
$("#dialog-email-confirm")
.dialog('option', 'position', [e.clientX+30, e.clientY])
.dialog('open');
根据Jquery website ,第一个脚本应该可以工作。
When tracking mouse movement, you usually need to know the actual position of the mouse pointer. The event object that is passed to the handler contains some information about the mouse coordinates. Properties such as .clientX, .offsetX, and .pageX are available, but support for them differs between browsers. Fortunately, jQuery normalizes the .pageX and .pageY properties so that they can be used in all browsers. These properties provide the X and Y coordinates of the mouse pointer relative to the top-left corner of the document, as illustrated in the example output above.
我使用以下方法检查以确保值相同,发现 Y 坐标存在差异。
var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
var clientCoords = "( " + e.clientX + ", " + e.clientY + " )";
alert(pageCoords + '\n' + clientCoords);
我已通读 QuirksMode , 也玩过 some test code其行为符合预期。为什么上面会在我的脚本中产生不同的结果?与我的 HTML 结构有关吗?
编辑(更新的 HTML):
<html>
<head>
<meta name="generator" content="HTML Tidy for Windows (vers 14 February 2006), see www.w3.org">
<title></title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css">
<link href="/Content/960.css" rel="stylesheet" type="text/css">
<link href="/Content/themes/liberty/jquery-ui.css" rel="stylesheet" type="text/css">
<link href="/Content/themes/dialogs-only/jquery-ui-1.8.14.custom.css" rel="stylesheet" type="text/css">
<link href="/Content/sexybuttons.css" rel="stylesheet" type="text/css">
<link href="/Scripts/messagebar/skins/plain/skin.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="page">
<div id="header" class="container_12"></div>
<div id="menuwrapper"></div>
<div id="content" class="container_12">
<div id="main" class="grid_12 alpha omega">
<h2>
Configuration Settings
</h2>
<form action="/Settings/Edit" method="post">
<fieldset>
<legend>Settings</legend> // snip
<div class="editor-label">
<label for="EmailSuccessList">List of recipients for Successful Notifications</label>
</div>
<div class="editor-field">
<fieldset>
<input type="hidden" name="EmailSuccessList.index" autocomplete="off" value="4eedd5a0-076b-4bc6-9a07-7455df9c5d83"><input type="hidden" name="EmailSuccessList.index" autocomplete="off" value="151d8ad0-f204-445c-8778-5207ddbae952"><input type="hidden" name="EmailSuccessList.index" autocomplete="off" value="7b51d4b0-78b6-4ccd-a886-ffef9fe8a00f"><input type="hidden" name="EmailSuccessList.index" autocomplete="off" value="0c7f4c5f-7344-4b47-9202-3ff61ce843fc">
<table id="editorEmailSuccessRows" class="editorEmailSuccessRows">
<tr class="editorRow">
<td class="emailRow">
<input class="text-box single-line" id="EmailSuccessList_4eedd5a0-076b-4bc6-9a07-7455df9c5d83_" name="EmailSuccessList[4eedd5a0-076b-4bc6-9a07-7455df9c5d83]" type="text" value="abcs@test.com">
</td>
<td>
<button type="button" href="#" id="deleteEmailRow" class="deleteEmailRow" name="abcs@test.com"><span><span><span class="delete">delete</span></span></span></button>
</td>
</tr>
<tr class="editorRow">
<td class="emailRow">
<input class="text-box single-line" id="EmailSuccessList_151d8ad0-f204-445c-8778-5207ddbae952_" name="EmailSuccessList[151d8ad0-f204-445c-8778-5207ddbae952]" type="text" value="abcs@test.com">
</td>
<td>
<button type="button" href="#" id="deleteEmailRow" class="deleteEmailRow" name="abcs@test.com"><span><span><span class="delete">delete</span></span></span></button>
</td>
</tr>
<tr class="editorRow">
<td class="emailRow">
<input class="text-box single-line" id="EmailSuccessList_7b51d4b0-78b6-4ccd-a886-ffef9fe8a00f_" name="EmailSuccessList[7b51d4b0-78b6-4ccd-a886-ffef9fe8a00f]" type="text" value="abcs@test.com">
</td>
<td>
<button type="button" href="#" id="deleteEmailRow" class="deleteEmailRow" name="abcs@test.com"><span><span><span class="delete">delete</span></span></span></button>
</td>
</tr>
<tr class="editorRow">
<td class="emailRow">
<input class="text-box single-line" id="EmailSuccessList_0c7f4c5f-7344-4b47-9202-3ff61ce843fc_" name="EmailSuccessList[0c7f4c5f-7344-4b47-9202-3ff61ce843fc]" type="text" value="abcs@test.com">
</td>
<td>
<button type="button" href="#" id="deleteEmailRow" class="deleteEmailRow" name="abcs@test.com"><span><span><span class="delete">delete</span></span></span></button>
</td>
</tr>
<tr>
<td colspan="3" align="right" class="lastRow">
<a href='/Settings/BlankEmailEditorRow?collectionName=EmailSuccessList' class=" sexysimple sexygreen" id='addNewSuccessEmail'><span class="add">Add new recipient</span></a>
</td>
</tr>
</table>
</fieldset>
</div><button type="submit" value="Save Configuration" id="save" name="save"></button> <a href="/Settings" id="cancelEdit">Cancel</a>
<div class="cancel" style="display: none">
<div id="dialog-confirm-cancel" title="Cancel Edit?" class="diag">
<p>
Any changes you have made will not be saved.
</p>
</div>
</div>
<div class="demo" style="display: none">
<div id="dialog-email-confirm" title="Delete Email?" class="dialogs-only">
<p>
Are you sure you wish to delete this recipient from the list : <span id="emailAddress" style="font-weight: bold;"></span>?
</p>
</div>
</div>
</fieldset>
</form>
<div id="footer"></div>
</div>
</div>
</div>
</body>
</html>
使用 Google Chrome v14 进行测试
引用http://jsfiddle.net/SUYA7/完整样本。
最佳答案
对于 pageX/pageY,您使用的是文档/页面相对位置,但 jQuery 对话框需要相对于视口(viewport)的位置。
关于javascript - 使用 PageY 和 ClientY 鼠标位置的差异结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7089842/
我试图在“onscroll”事件中“刷新”pageY 值。我实际上是通过计算如果用户滚动 (+-)X 像素时鼠标的位置来使其工作的。我确信有更性感的方式来做到这一点。 Here is a DEMO 提
我有一个可滚动的页面。它的 event.pageY 位置总是根据我的屏幕大小,我的意思是即使我向下滚动很多并在屏幕顶部附近点击,它也会像 50px . 我正在使用 event.pageY 在普通的
我正在使用 eventObject.pageY 来获取事件触发时的当前鼠标位置。但我注意到这个数字是相对于文档而不是视口(viewport)的。 我想获取相对于视口(viewport)的pageY(当
我正在使用一个脚本来检测您的鼠标在悬停时进入的位置。 我正在尝试在 div 中使用脚本 overflow-y: scroll 脚本使用 pageY 检测相对于窗口的位置,有没有办法让 pageY 检测
因此,我使用从各种来源收集的以下代码来尝试计算出点击时图像的坐标: var naturalWidth = 690; var x = 0; var y = 0; var img = $('.imageT
我使用 jquery-ui 制作了一个模态对话框,它具有绝对位置。在我的新对话框中,我想使用 event.pageY 获取鼠标位置。 但是,event.pageY 返回我的背景页面的位置,当我想使用
有没有不使用 e.pageX 和 e.pageY 来定位任何元素的方法? 检查这个fiddle fiddle 实际上是对我要问的问题的一次糟糕尝试,但我认为一个视觉示例会更好。我想知道的是,是否可以通
所以,正如问题所指出的那样,有没有办法在 jQuery 中触发 mousemove 事件,同时将鼠标坐标发送到事件对象? 到目前为止,我的代码可以使用 .trigger(event) 函数触发 mou
我一直在寻找一种让工具提示悬停在光标上方的方法,我看过很多建议使用事件 pageX 和 pageY 坐标如下: const showToolTip = (evt, text) => { let t
我的问题类似于Opening JQuery Ui Dialog in MousePosition ,但是不同之处在于我希望 Jquery 对话框显示在非常靠近被单击的按钮的位置。我当前的问题是,当我设
我创建 JavaScript 来获取鼠标坐标。 通过鼠标坐标显示图像的脚本(动画光标脚本 (с) Zac Ang Eng Keat): Cursor document.body.style.cu
我试图在单击鼠标时将 div 放置在光标所在的位置。因此,当我使用 e.PageX 和 e.pageY 时,它实际上将我的 div 放置得比预期低得多。有什么想法吗? var mouseX = e.p
我正在 iPhone 上玩 touchstart 和 touchend 事件。我构建了一个示例页面,其中包含 div,如果您触摸它并滚动页面,它应该返回开始位置和结束位置的 y 坐标。 链接:http
我需要一个弹出 div,它将出现在我单击的 anchor 的正下方。现在,我想确定 anchor 的 onClick 事件的 x 和 y 坐标。这样做的最佳实践是什么?建议使用哪些事件属性? 最佳答案
我正在尝试移动位于 HTML 图像中心的 SVG 圆圈。如果您将鼠标放在图像上并拖动圆圈,效果会很好。 但是,如果我缩放图像(点击 codepen 中的 + 按钮),pageX 和 pageY 到 S
最新版本的 android chrome 是否破坏了 jquery pageY 值,还是我完全遗漏了什么?特别是从鼠标事件返回的 pageX/pageY 值。 $( document ).on( "
不确定我可能做错了什么,但我试图通过给它一个 X 和 Y 值来模拟点击事件。 这是我的代码 var clickEvent = document.createEvent('MouseEvent'),
我有下面的代码,它会在鼠标悬停时(在链接上)显示一个弹出窗口: Text I have some explaining to do!
$(document).scroll(function (e) { log("event:" + e.pageY + " - " + e.type); }); e.pageY 是未定义,e.t
当我在 Canvas 上应用翻译(转换:翻译...)时,我使用 e.clientX 和 e.clientY 检查它在 Chrome Windows 上的位置,我得到不同的值。这同样适用于 Canvas
我是一名优秀的程序员,十分优秀!