如何让Jquery比较两个选择器?
我认为我的JQuery知识有点欠缺。如何让Jquery比较两个选择器?
在我的页面上,我有0个或多个隐藏变量,看起来像这样。
<input type='hidden' class='defaultTickedStatus' value='INACTIVE' /> <input type='hidden' class='defaultTickedStatus' value='ACTIVE' />
他们可以通过选择$(“ defaultTickedStatus”)
我也有一些复选框中的元素像这样
<div id="checkboxes"> <input type="checkbox" value="INACTIVE" id="checkbox1" tabindex="30430">
<input type="checkbox" value="ACTIVE" id="checkbox1" tabindex="30430">
<input type="checkbox" value="SUBMITTED" id="checkbox1" tabindex="30430">
<input type="checkbox" value="FINALISED" id="checkbox1" tabindex="30430">
...
</div>
他们可以通过访问进行访问选择$(“#checkboxes输入”)
我想要做的是当用户点击一个按钮,我希望它通过所有的复选框,并为有价值的e等于隐藏标签中的一个值,然后检查它。
但是,对JQuery有点不熟悉,我不熟悉如何实现这一点。这是我迄今为止...
$("#checkboxes input").each(function (index, Element) {
$(".defaultTickedStatus").each(function (i2, status)
{
if (status.value == Element.value)
{
$(status).selected(true);
}
});
});
它变得到$(状态).selected(真)的一部分,但由于某些原因,它似乎并没有工作。另外,我认为通过Jquery有更简单的方法来做到这一点。
不知道有人能帮助我。
感谢
回答:
要小心,你不能有4次id="checkbox1"
。此外,也没有必要有2嵌套.each(function()
如果您使用选择input[value="foo"]
这里是你如何能做到这一点:
$("#clickme").click(function() { $(".defaultTickedStatus").each(function() {
var value = $(this).attr('value');
$('#checkboxes input[value="'+value+'"]').attr('checked','checked');
});
});
working jsFiddle
回答:
貌似你试图代替复选框
回答:
首先要选择一个隐藏的标签,selected()
不是jQuery的API的一部分,你需要在这一点上使用attr('checked', true)
。
第二件事是,对每个复选框的所有隐藏字段进行迭代效率非常低,您可能需要将选中的值缓存在数组或对象中。
回答:
你有几个问题。首先,您试图检查错误的元素(隐藏的input
元素,而不是复选框)。要解决该问题,请在if
子句中将status
更改为Element
。其次,什么是selected
方法?我假设你要选中该复选框,这样你就需要checked
属性:
$("#checkboxes input").each(function (index, Element) { $(".defaultTickedStatus").each(function (i2, status) {
if (status.value == Element.value) {
Element.checked = true;
return false;
}
});
});
请注意,我还添加了return false;
到if
条款。如果找到匹配,那么这将跳出each
循环,以防止不必要的迭代。随着您目前拥有的复选框/隐藏输入的数量,它不会真正发挥作用,但我认为这是一个很好的习惯。
另请注意,您在每个复选框上都使用了相同的id
值。重复id
s是无效的,以便稍后可能导致您的问题。
这是上述代码的working example。
以上是 如何让Jquery比较两个选择器? 的全部内容, 来源链接: utcz.com/qa/265460.html