如何让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

回到顶部