2011-01-06 2 views
3

私はRichFacesの使用と豊富なの一つにonclickを追加:dataTableのは、このHTMLを生成:jQueryのは - TR

<form id="scheduleForm"> 
    <table id="scheduleForm:rowList"> 
    <tr> 
     <td></td> 
    </tr> 
    <tr> 
     <td></td> 
    </tr> 
    <tr> 
     <td></td> 
    </tr> 
    </table> 
</form> 

を、私はこのテーブルのためのTR上のクリックに基づいて行動したいと思います。これどうやってするの? 以下はページ上の他のテーブルでも機能し、他の行についてもalert()を取得していますが、これは必要ありません。

 jQuery('#scheduleForm:rowList tr').click(function(event) { 
      alert(1); 
     }); 

「:」チャーについてRichfacesによって生成されます。

元のコードは次のとおりです。あなたは、以下行いTR IDを与えることができます

<h:form id="scheduleForm"> 
<rich:dataTable id="rowList"> 
</rich:dataTable> 
</h:form> 
+0

私は「:」がここで何かをしているかもしれないと思います。私が間違っていない場合、 ":"はメタ文字であり、セレクタでいくつかの意味を持ちます。 – Biswanath

答えて

2

私は:がJSF/RichFacesによって生成されていることを知っています。私もその前に:に問題があった。おそらく、jQueryの人々がIDで期待していたものではありません。彼らはセレクタのためにそれを使用しています。あなたはID属性にコロン:を持って

jQuery('table[id = "scheduleForm:rowList"] tr').click(...) 

http://jee-bpel-soa.blogspot.com/2009/04/tips-and-tricks-on-jquery-and-richfaces.html

+0

ありがとう!私が望むように働く。 – Guus

0

<form id="scheduleForm"> 
    <table id="scheduleForm:rowList"> 
    <tr id="tr1"> 
     <td></td> 
    </tr> 
    </table> 
</form> 

jQuery('#tr1').click(function(event) { 
    alert(1); 
}); 
+0

これは明らかですが、IDFをにJSFとRichFacesで強制するのは非常に簡単だとは思いません... –

+0

ありがとう、私はそこにもっと多くの行があることを忘れています。私はそのテーブルのすべての行にしたい。 – Guus

1

次のように試してみてください。

jQuery(document.getElementById('scheduleForm:rowList').getElementsByTagName('tr')).click(function(event) { 
      alert(1); 
     }); 
+0

ありがとうございます。これも機能します。 – Guus

0

使用しよう:

jQuery('#scheduleForm:rowList>tr').click(function(event) { 
      alert(1); 
     }); 

、それはより良い憲章を使用しなかっただろう「:」ID attribute.Iの値に正確に<を知っているが、私はそれができるとは思いませんでした多くの問題の共鳴。

+0

よろしくお願いいたします。 ":"はRichfacesによって生成されます。 – Guus

0

をチェックアウト:何がやりたいことはこれです。

jQuery('#scheduleForm\\:rowList tr').click(function(event) { 
     alert(1); 
}); 
+0

ありがとう、これも動作します。 – Guus

0

:JSFによって生成されたコロンは、あなたがこのようにそれをエスケープする必要があるので、jQueryのセレクタで特別な意味を持っています。 フォームにprependId = "false"を設定することもできます。次に、使用する:

このテーブルのみが選択されます。

+0

ああ、prependId =ありがとう、新しい何かを学んだ! – Guus

0
jQuery("#rowList").on("click", "tr", function(event) { 
    alert($(this).id); 
}); 
+0

このコードは質問に答えるかもしれませんが、どのようにして問題が解決されるのかについての追加の文脈を提供することで、回答の長期的な価値が向上します。 – adiga