我在获取相应checked
值的label值方面遇到了一些问题。现在我尝试使用closest
属性,但它没有工作,因为我没有tr
并且也无法使用它。问题是我在checkbox
标记内有li
及其值。点击button
我会调用一个需要向我提供checked
值的函数。所以我不知道我怎么能拿到它。以下是我的代码和我尝试过的内容。
function test() {
$('.chkName').each(function() {
if ($(this).is(':checked')) {
//How do i fetch the coorresponding val?
}
});
}
<li class="listRow" style=" max-width:314px; min-width:314px;">
<label>
<input id="id1" type="checkbox" name="" checked="checked" class="chkName">
<label>test</label>
</label>
</li>
<li class="listRow" style=" max-width:314px; min-width:314px;">
<label>
<input id="id2" type="checkbox" name="" checked="checked" class="chkName">
<label>test1</label>
</label>
</li>
<li class="listRow" style=" max-width:314px; min-width:314px;">
<label>
<input id="id3" type="checkbox" name="" class="chkName">
<label>test2</label>
</label>
</li>
答案 0 :(得分:1)
在我们提出您的问题之前,有几个问题需要解决。首先,由于嵌套了<label>
元素,因此HTML无效。我建议您删除外部属性,并为内部提供for
属性,以将其与兄弟复选框相关联。此外,您不应该使用内联样式(或JS)。 .listRow
元素已经有了类,因此您可以轻松地将样式放在样式表中。
至于问题,您可以使用:checked
选择器仅查找选中的元素。然后,在each()
循环中,您可以使用this
关键字来引用迭代中的当前元素。从那里你可以使用next()
来获取兄弟标签元素。试试这个:
function test() {
$('.chkName:checked').each(function() {
var $label = $(this).next('label');
console.log($label.text());
});
}
test();
&#13;
.listRow {
width: 314px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="listRow">
<input id="id1" type="checkbox" name="" checked="checked" class="chkName">
<label for="id1">test</label>
</li>
<li class="listRow">
<input id="id2" type="checkbox" name="" checked="checked" class="chkName">
<label for="id2">test1</label>
</li>
<li class="listRow">
<input id="id3" type="checkbox" name="" class="chkName">
<label for="id3">test2</label>
</li>
</ul>
&#13;
答案 1 :(得分:0)
我建议在复选框本身设置一个值。
<li class="listRow" style=" max-width:314px; min-width:314px;">
<input value="test" id="id1" type="checkbox" name="" checked="checked" class="chkName">
<label>test</label>
</li>
<li class="listRow" style=" max-width:314px; min-width:314px;">
<input value="test1" id="id2" type="checkbox" name="" checked="checked" class="chkName">
<label>test1</label>
</li>
<li class="listRow" style=" max-width:314px; min-width:314px;">
<input value="test2" id="id3" type="checkbox" name="" class="chkName">
<label>test2</label>
</li>
JS:
function test()
{
$('.chkName').each(function()
{
if($(this).is(':checked'))
{
//How do i fetch the coorresponding val?
console.log($(this).val())
}
});
}
否则,如果你真的想要标签的价值,请使用&#34; next&#34;:
function test()
{
$('.chkName').each(function()
{
if($(this).is(':checked'))
{
//How do i fetch the coorresponding val?
console.log($(this).next().text())
}
});
}