几个jQuery函数接受一个函数参数,它将在函数完成后运行(因此只有当函数运行的选择器匹配任何东西时),但不是全部。我想要做的是选择正确的单选按钮(基于.each()迭代中的键/值对),然后显示ID与值匹配的div。
上下文是我基于JSON格式的数组填充表单,遍历每一对。
以下是片段:
$('input:radio[name="' + key + '"][value="'+ value + '"]')
.prop('checked', true);
}); // this works
然后我想要运行这一行:
$('#' + value).show();
仅当第一个选择器匹配任何内容时。
我确定这是一种简单的方法,但我不知道。
答案 0 :(得分:3)
我想你可以分手吧。有一个包含选择器结果的变量。如果该数组包含任何匹配项(检查其长度),则将checked属性设置为true并显示另一个元素:
var $matches = $('input:radio[name="' + key + '"][value="'+ value + '"]');
if ($matches.length) {
$matches.prop('checked', true);
$('#' + value).show();
}
如果您多次运行,只需将其包装在以key
和value
为参数的函数中。
编辑:您可以将其缩短一点:
var $matches = $('input:radio[name="' + key + '"][value="'+ value + '"]').prop('checked', true);
$('#' + value).toggle($matches.length);
如果没有匹配项,此示例还会隐藏其他元素。