Primefaces 将对话框定位在javascript变量定义的位置
如何在javascript变量定义的x、y坐标处动态定位primefacesPrimefaces 将对话框定位在javascript变量定义的位置,primefaces,Primefaces,如何在javascript变量定义的x、y坐标处动态定位primefaces对话框 我的尝试:- 我尝试通过javascript本身来实现这一点,但通过以下代码设置位置失败: var dialog_x=300; var dialog_y=500; var s = document.getElementById("dialogId"); s.style.position = "relative"; s.style.
对话框
我的尝试:-
我尝试通过javascript本身来实现这一点,但通过以下代码设置位置失败:
var dialog_x=300;
var dialog_y=500;
var s = document.getElementById("dialogId");
s.style.position = "relative";
s.style.left = dialog_x + "px";
s.style.top = dialog_y + "px";
注意,这个dialogId是我在dialog的id属性中定义的。当我知道父容器的id也被附加到此id之后,我也尝试使用结果id(在附加之后),但它不起作用
编辑:
我发现对话框容器(包含对话框的标题和内容)没有分配任何id,这就是我无法访问对话框的原因。我希望为该容器分配通过对话框组件上的id属性定义的id。我仍然无法理解在未分配任何id的情况下如何检索此元素。我定义的id实际上已分配给主对话框容器内的对话框内容容器。使用
jQuery
,您可以调用javascript
方法,该方法将在对话框显示时调整对话框的位置
<h:form prependId="false">
<p:commandButton value="Select Location" oncomplete="TreeDialog.show()" id="selectLocationButton"></p:commandButton>
</h:form>
<p:dialog header="Select the location" id="treeDialog"
widgetVar="TreeDialog"
modal="true" onShow="adjustPositionning($('#selectLocationButton'), $('#treeDialog'))" width="450">
<p:tree value="#{myController.root}" var="node" dynamic="true" cache="true">
<p:treeNode>
<h:outputText value="#{node.name}" />
</p:treeNode>
</p:tree>
</p:dialog>
<script type="text/javascript">
function adjustPositionning(sourceElement, dialog) {
var x = sourceElement.offset().left;
var y = sourceElement.offset().top;
var width = sourceElement.width();
var padding = 15;
dialog.parent().offset({ top: y, left: x + width + padding });
}
</script>
功能调整定位(sourceElement,对话框){
var x=sourceElement.offset().left;
var y=sourceElement.offset().top;
var width=sourceElement.width();
var=15;
dialog.parent().offset({top:y,left:x+width+padding});
}
可能需要将其设置为相对s.style.position=“relative”
您可以尝试设置为绝对,s.style.position=“绝对”代码>?我也尝试过这样做,但我想问题是我甚至无法用我分配给它的Id检索javascript中的dialog元素。听起来你有更基本的问题。如果您没有下载并安装Firefox的Firebug插件,我强烈建议您这样做。使用它,您将能够在DOM上搜索元素,并能够找到对话框的实际Id。我试着检索我在那里看到的id为的对话,但是没有停止,想想你刚才写了什么。实际上,您声称document.getElementById
无法正常工作。唯一的原因是您传递了错误的id。可能有多个DOM元素具有相同的id。您需要更仔细地检查dialogId是什么,以及传递给document.getElementById
的是什么。