-2

これは私のjsfテーブルです:

<h:dataTable value="myBean.rows" var="b">
    <h:column>
    <div class="slider-range-min">                               
        <h:inputHidden id="buildingId" value="#{b.buildingId}" />
        <h:inputHidden id="amount" value="#{b.amount}" />
    </div>
   </h:column>
</h:dataTable>

ここで、jQuery を介して上記の「div」に JavaScript でアクセスできるとしましょう。

$(this).

inputHiddenこの方法で最初の値$(this).children[0].innerHTMLhiddenInputアクセスできid(buildingId)ます: これを達成する方法は?hiddenInputschildren[0]

(13:52:12 16.03.2013)

うーん、あなたの解決策はどれもうまくいきません。これは私のJavaScriptコードです:

 $(function() {
            $( ".slider-range-min" ).slider({
              range: "min",
              value: 37,
              min: 0,
              max: 700,
              stop: function( event, ui ) {
                  var buildingId = $(this).find('#buildingId').val();

                  console.log(buildingId);

ご覧のとおり、各 div は JQuery UI スライダーです。コンソールは「未定義」を出力します。HTML ドキュメントでは、このテーブルのこれらの入力の 1 つが id: "foodTableForm:foodTable:0:buildingId" で表示されます。ご覧のとおり、これらの ID はテーブルのために変更されています。

4

3 に答える 3

0

この回答によると、ah:inputHiddenが複数回使用されている場合、実際のHTMLは次のようになります。

<input type="hidden" id="form:0:hidden" name="nameofyourform:uniquenumber:buildingId" value="value" />

divへの参照であると仮定するthisと、次の2つのいずれかを実行できるはずです。

var buildingId = $(this).find("input[name*='buildingId']").val();

* =は、「含む」セレクターです。もう1つのオプションは、ソースを調べて、命名がどのように機能するかを理解することです。一意のIDがテーブルの行インデックスと何らかの形で同等である場合は、テーブルの行インデックスを見つけてIDを作成できます。

var rowId = $(this).closest('tr').index(); // add or subtract if the id of the field is off by a certain number...

var buildingId = $("#yourform:" + rowId + ":buildingId").val();
于 2013-03-16T12:35:15.090 に答える
0
$(this).find('#buildingId').val()  // #{b.buildingId}
于 2013-03-16T12:35:34.630 に答える
0

生成された ID はわからないかもしれませんが、それがbuildingIdで終わっていることは知っています(少なくともそうすべきです)。

したがって、 を介して div にアクセスできる場合は、で$(this)値を取得できます。$(this).find("[id$='buildingId']")ここで、$「で終わる」を意味します。

idに置き換える必要があるかもしれませんname

于 2013-03-16T13:01:43.860 に答える