这是我的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>
现在,让我们说,我在JavaScript中通过jQuery访问上面的'div':
$(this).
我可以通过这种方式访问第一个inputHidden
值:$(this).children[0].innerHTML
,但我的目标是
要通过hiddenInput
获取此id(buildingId)
字段,因为这些hiddenInputs
的顺序可能会发生变化,因此通过children[0]
的访问可能不再有效。怎么做到这一点?
(2013年3月16日13:52:12)
嗯,没有你的解决方案不起作用。这是我的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滑块。控制台打印'undefined'。 在html文档中,此表中的其中一个输入显示为 id:“foodTableForm:foodTable:0:buildingId”。 所以,正如你所看到的,这些id因为表而被修改。
答案 0 :(得分:0)
根据this answer,如果多次使用h:inputHidden
,实际的HTML将如下所示:
<input type="hidden" id="form:0:hidden" name="nameofyourform:uniquenumber:buildingId" value="value" />
假设this
是对div的引用,您应该可以执行以下两项操作之一:
var buildingId = $(this).find("input[name*='buildingId']").val();
* =是“contains”选择器。另一种选择是查看源代码并找出命名的工作原理。如果唯一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();
答案 1 :(得分:0)
$(this).find('#buildingId').val() // #{b.buildingId}
答案 2 :(得分:0)
您可能不知道生成的ID,但您知道它以 buildingId 结束(至少应该这样)。
因此,当您通过$(this)
访问div时,您可以使用$(this).find("[id$='buildingId']")
获取值,其中$
表示“以...结尾”。
也许您必须将id
替换为name
。