我的问题是如何使用jquery find(),根据我选中的复选框找到正确的列表项?我已经尝试动态地构建字符串,但它不起作用......?!
有更简单的方法吗?
我列出了几个listitems和几个复选框。
<li class="item" data-id="2" data-type="Bokföringsprogram" operativsystem='Windows' >
<li class="item" data-id="2" data-type="Bokföringsprogram" operativsystem='Windows' operativsystem='MAC OS' >
<li class="item" data-id="67" data-type="Faktureringsprogram" operativsystem='Windows' operativsystem='MAC OS' >
<li><input type="checkbox" name="boxvalidator" value="Windows" />Windows<br /></li>
<li><input type="checkbox" name="boxvalidator" value="MAC OS" />MAC OS<br /></li>
<li><input type="checkbox" name="boxvalidator" value="Ubuntu" />Ubuntu<br /></li>
<li><input type="checkbox" name="boxvalidator" value="Linux" />Linux<br /></li>
Jquery代码
$('input:checkbox[name="boxvalidator"]:checked').each(function()
{
$boxchecked = $boxchecked + ",li[operativsystem=~" + $(this).attr('value') + "],";
});
var $filteredPortfolio = $portfolioClone.find($boxchecked);
String看起来像这样: undefined,li [operativsystem = ~Windows] ,, li [operativsystem = ~MAC OS],
必须是一种更简单的方法吗?
干杯&amp;感谢您一直在这里阅读!
答案 0 :(得分:0)
正如sgarrett所说,你的选择器$('input:checkbox [name =“boxvalidator”]:checked')看起来不错。由于您要选择列表项而不是复选框,只需修改此选择器以选择返回复选框的父项:
$。( '输入:复选框[名称= “boxvalidator”]:检查')的父()
答案 1 :(得分:0)
由此:
字符串如下所示:undefined,li [operativsystem = ~Windows] ,, li [operativsystem = ~MAC OS],
看起来您可能希望在该功能之外的某个位置设置$boxchecked = ''
。或者,您可以执行以下操作以避免使用额外的逗号:
$('input:checkbox[name="boxvalidator"]:checked').each(function()
{
if (typeof $boxchecked !== 'undefined') {
$boxchecked = $boxchecked + ",";
}
else {
$boxchecked = "";
}
$boxchecked = $boxchecked + "li[operativsystem=~" + $(this).attr('value') + "]";
});
话虽这么说,@ veblock的解决方案看起来更像是获得你想要的东西。