2011-07-03 13 views
2

onclickイベントの後にJSFコンポーネントの座標を取得するにはどうすればよいですか?クリックされたアイコンのすぐ下にオーバーレイを配置する必要があります。コンポーネントの座標を取得する

JSFでは、手動でjavascript関数を記述するのではなく、そのような組み込み関数が用意されていますか?

答えて

3

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: nonestyle属性は、最初にコンポーネントを非表示になります。

<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) 

は、二重のバックスラッシュに注意してください。

5

いいえ、ありません。その位置はブラウザ(クライアント)に依存します。クライアント側では、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; 
// ... 
-3

RichFacesやIceFacesなどのJSFコンポーネントライブラリを使用することをおすすめします。それらの多くはAJAXの機能とJavaScriptライブラリの統合を持っているため、そのようなことをするためのコンポーネントがあります。

+0

私はプライムフェイスを使用していますが、私はそのような施設を知っていません。 –

+0

私はあまりよく分かりません。しかし、あなたが探しているものを見つけた場合には、何も技術的にライブラリを追加できません。彼らは(一緒に)うまく一緒に遊ぶべきです。 – Mac

+0

サーバー側(JSF)とクライアント側の技術(javascript)の違いを確認する必要があります。 –

関連する問題