onclickイベントの後にJSFコンポーネントの座標を取得するにはどうすればよいですか?クリックされたアイコンのすぐ下にオーバーレイを配置する必要があります。コンポーネントの座標を取得する
JSFでは、手動でjavascript関数を記述するのではなく、そのような組み込み関数が用意されていますか?
onclickイベントの後にJSFコンポーネントの座標を取得するにはどうすればよいですか?クリックされたアイコンのすぐ下にオーバーレイを配置する必要があります。コンポーネントの座標を取得する
JSFでは、手動でjavascript関数を記述するのではなく、そのような組み込み関数が用意されていますか?
id=placeholder
(リンクまたはボタンかもしれない)のコンポーネントをクリックすると、トリガーコンポーネントのすぐ下に別のコンポーネント(id=menu
)が開きます。マウスをトリガ構成要素から離れて移動された場合、メニューが消え:
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#placeholder").click(function(event) {
//get the position of the placeholder element
var pos = jQuery(this).offset();
var height = jQuery(this).height();
//show the menu directly below the placeholder
jQuery("#menu").css({ "left": pos.left + "px", "top": (pos.top + height) + "px" });
jQuery("#menu").show();
});
// hide the menu on mouseout
jQuery("#placeholder").mouseout(function(event) {
jQuery("#menu").hide();
});
});
</script>
がid=menu
有する成分がdiv
またはJSF h:panelGroup
または他の任意のコンポーネントとすることができます。 display: none
とstyle
属性は、最初にコンポーネントを非表示になります。
<h:panelGroup style="position: absolute; display: none;" id="menu">
<!-- content here -->
</h:panelGroup>
は、jQueryのIDセレクタは、コンポーネントの正しいIDを取得していることを確認してください。例えば。あなたの要素がid=form1
とフォーム内にあるかどうか、jQueryの呼び出しは、このような何かを見ています
jQuery("#form1\\:placeholder").click(function(event)
は、二重のバックスラッシュに注意してください。
いいえ、ありません。その位置はブラウザ(クライアント)に依存します。クライアント側では、JSFの手段もまったくありません。それはすべて単純なHTML/CSS/JSです。場所はHTML DOM要素からのみ抽出できます。 JSからJSFに渡すか、JSFの代わりにJSでビジネス・ジョブを完全に実行する必要があります。
PrimeFacesにはjQueryが付属しているため、ドキュメントに対する要素の位置を取得する最も良い方法はjQuery.offset()
です。
var $element = jQuery('#someid');
var offset = $element.offset();
var x = offset.left;
var y = offset.top;
// ...
RichFacesやIceFacesなどのJSFコンポーネントライブラリを使用することをおすすめします。それらの多くはAJAXの機能とJavaScriptライブラリの統合を持っているため、そのようなことをするためのコンポーネントがあります。
私はプライムフェイスを使用していますが、私はそのような施設を知っていません。 –
私はあまりよく分かりません。しかし、あなたが探しているものを見つけた場合には、何も技術的にライブラリを追加できません。彼らは(一緒に)うまく一緒に遊ぶべきです。 – Mac
サーバー側(JSF)とクライアント側の技術(javascript)の違いを確認する必要があります。 –