<tr>
<td class="value" style="width:40%;">
<label class="label">Gender value</label>
</td>
<td class="value" style="width:40%;">
<input id="checkbox" type="checkbox" tabindex="0" name="chkCustom">
<label>M</label>
<input id="checkbox" type="checkbox" tabindex="0" name="chkCustom">
<label>F</label>
<input id="checkbox" type="checkbox" tabindex="0" name="chkCustom">
<label>U</label>
</td>
</tr>
我有上面的HTML,我正在动态地阅读网页上的所有控件。在上面我想读取其指定类型的标签值,并根据其类型读取下一个值:
请查看我的代码:
// Read labels text
$("#tblCustomFields tr .label").each(function () {
var value = this.innerHTML;
console.log(this);
var type = $(this).closest('td').next().find('input').val();
alert(value);
alert(type);
//If next element type is *checkbox* then read checkbox values
if(type == "checkbox")
{
// Read checkbox values
$('tblCustomFields tr input:checked').each(function (s) {
var inputCheckBox = new Array();
inputCheckBox.push([this.id, 0]);
});
for (var i = 0; i < inputCheckBox.length; i++) {
alert(inputCheckBox[i]);
}
}
});
上面的代码会给我网页上的所有复选框,但我想要只在上面的HTML中定义的复选框,我也想要只读取那些被选中的复选框的值。请帮忙。
目标:我将动态HTML绑定到页面,其类型可能是复选框或下拉列表或文字。现在我想阅读页面标签和与该标签相关的值。对于我的标签(性别值),其值为复选框,因此我只想阅读与该标签相关的已选中复选框值。
更新:至少告诉我如何获得下一个元素类型
我使用以下代码:
var type = $(this).closest('td').next().find('type').val();
任何帮助
答案 0 :(得分:0)
我认为所有标记都必须经过审核,但无论如何,我想我知道(请注意我,如果没有)你想要什么。
试试这个:
// Read labels text
$("#tblCustomFields tr .label").each(function () {
var value = this.innerHTML;
console.log(this);
alert(value);
var inputCheckBox = new Array();
$(this).first().closest("td").next().find("input[type='checkbox']:checked").each(function(){
inputCheckBox.push($(this).next("label").text());
});
for (var i = 0; i < inputCheckBox.length; i++) {
alert(inputCheckBox[i]);
}
});
我会让你jsFiddle进行测试。
答案 1 :(得分:0)
你的问题令人困惑。
$(&#34; #tblCustomFields tr .label&#34;) - 这将寻找一个TR为标签的孩子。您的HTML显示其位于 td 内。如果所有标签元素都有类标签,您可以通过 -
来引用每个标签元素$(".label).each(function(){
//do whatever you want
});
使用类标签 -
获取标签旁边的元素类型$(".label).each(function(){
var NextTd = $(this).parent().next(); // refers to the next td
$(NextTd).each(function(){
var type = $(this).find('input').prop('tagName');
//do whatever you want
});
});