Javascript 通过JQuery在JSF数据表中查找元素id

Javascript 通过JQuery在JSF数据表中查找元素id,javascript,jquery,jsf,Javascript,Jquery,Jsf,这是我的jsf表: <h:dataTable value="myBean.rows" var="b"> <h:column> <div class="slider-range-min"> <h:inputHidden id="buildingId" value="#{b.buildingId}" /> <h:inputHidden i

这是我的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>
如您所见,每个div都是一个jqueryui滑块。控制台打印“未定义”。 在html文档中,此表中的其中一个输入显示为 id:foodTableForm:foodTable:0:buildingId。 因此,正如您所看到的,这些id是由于表格而修改的。

根据,如果h:InAuthiden被多次使用,实际的HTML将如下所示:

<input type="hidden" id="form:0:hidden" name="nameofyourform:uniquenumber:buildingId" value="value" />
*=是选择器。另一个选择是查看源代码并找出命名的工作方式。如果唯一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();

您可能不知道生成的id,但您知道它至少应该以buildingId结尾

因此,当您通过$this访问div时,您可以使用$this获得值。查找[id$='buildingId',其中$means以结尾


也许您必须用名称替换id。

为什么不$'buildingId'.html?您的问题可能有点不清楚。您想查找输入的id,还是使用id查找输入?我无法按您的方式获取,因为这些inputHidden元素位于表中,因此在HTML源代码中,不会有id为“buildingId”的元素。我可以通过$this访问表中的特定div。现在,我想在这个div中找到具有“buildingId”的元素。无法使用$'buildingId'完成此操作,因为这是一个表,因此在html文档中会向id追加一些内容。可以使用$this.children[0]完成此操作,但这不是完整的解决方案,因为这些输入将来可能会更改。不,只有当有多个元素具有此id时才有意义,这是非法的。没有完美的代码。我同意这是非法的,但它会起作用。@makedon:这是非法的,但它会起作用,这并不是我们应该采取的态度。如果它违反了规范,则无论它是否有效,都不应执行该操作。@scott呈现的id将不是buildingId,而是唯一的。根据对h:InPurthidden的少量研究编辑:谢谢您的回答,但我已经使用了@zeroflag的解决方案,但希望您以这种方式查找id的解决方案能够起作用:。谢谢zeroflagL,非常有效!感谢stackoverflow这样一个很棒的论坛,用户可以在几秒钟内回答:。谢谢你提出了这么一个很棒的问题;
var buildingId = $(this).find("input[name*='buildingId']").val();
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();
$(this).find('#buildingId').val()  // #{b.buildingId}