2010-12-30 21 views
1

私はp:dataTableを持っていて、マウスの上にマウスを置くとdelete画像が表示され、その行を削除できます。私はPrimeFaces.escapeClientIdを使ってjsf Ididに変換して、jQueryを理解します。ここに私がこれまでに得たものがあります。OnMouseOverはp:dataTableの各行内に画像を表示します

<p:dataTable value=#{...} var="item"> 
    <p:column> 
     <div onmouseover="jQuery(PrimeFaces.escapeClientId('deleteButton')).fadeIn()"> 
      <!-- Content of the row --> 
      <p:commandButton id="deleteButton" image="delete" style="border: 0; display: none;" 
           actionListener="#{bean.deleteRow(item)}" /> 
     </div> 
    </p:column> 
<p:dataTable> 

残念ながら、それは動作しません。 Firebugはエラーを返さない。助けてください

+0

JSFまたはPrimeFaceを知らない。そしてあなたのコードを見れば、それはそのままになります。私は今は無知かもしれない。しかし、地球上では何がそのコードを生成しましたか? :P(申し訳ありません、この非常に役立つポスト:)) – PeeHaa

答えて

1

すぐに問題は、あなたが "deleteButton"の周りに引用符を入れていないということです - それでjavascriptは文字列リテラルではなく変数名であると考えました。

あなたはjQueryのコンテキストとしてこのを渡すことによって、例えば、「現在の要素内のすべてのdivを」簡単に全体のid事業をスキップし、単に表示することができます:

<p:column> 
<div onmouseover="jQuery('div', this).fadeIn()"> 
    to jest div 
    <div style="color: wheat; background-color: green; display: none"> 
     <p:commandButton id="deleteButton" image="delete" style="border: 0" actionListener="#{bean.deleteRow(item)}" /> 
    </div> 
</div> 
</p:column> 

のonmouseover必要がありますまた、 p:columnで作業してください。

+0

ありがとうございます。私はもともと 'deleteButton'を引用しています。私はそれらを入力すると、ちょうど放棄されました。一重引用符の有無にかかわらず、それはまだ動作しません。しかし、あなたのIDは良いアイデアのようにIDのビジネスサウンドを取り出します。私は試してみる –

+1

jQuery( 'div'、this).fadeOut(); "を最外の' div'に追加すると、画像が点滅し、点滅します(2回)。どんな考え?もう一つの疑問は、inner-divです。私はそのスタイルを 'display:inline'にしたいので、改行を作成しませんが、すでに' display:none'を持っています。 'inline'と' none'の両方に表示スタイルを設定する方法があります –

+0

ボタンのクライアントIDは "deleteButton"ではなく "idofform:idoftable:deletebutton:"のように元のコードは引用符でも機能しません。行可能 "(a:b:削除ボタン:45)。あなたは "コンポーネント"暗黙の変数を使用することでそれを回避することができますが、これは厄介な傾向があります。 – fdreger

0

例えばバブリングイベントによって引き起こされることを避けるために、点滅代わりonmouseoveronmouseoutの使用onmouseenteronmouseleave

<div onmouseenter="jQuery('span', this).fadeIn()" 
    onmouseleave="jQuery('span', this).fadeOut()"> 
    ... 
</div> 
関連する問題