Javascript 通过JQuery在JSF数据表中查找元素id
这是我的jsf表: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
<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}