我试图使用
jquery的查找功能改变li内部的span的显示属性….它不工作,我想我知道为什么….因为跨度不在输入元素内部对吗?但我不知道如何解决它
继承我的代码:
$('form ul li input').click(function() { if ($(this).is(':checked')) $(this).find('span').attr('display','block'); else $(this).find('span').attr('display','none'); });
我知道我需要做的就是让它搜索LI而不是INPUT ….但我不知道该怎么做.
继承人的HTML:
<li> <input type="checkBox" name="attack_strategies[]" id="strategy_4" value="4" /> <label for="strategy_4">meditation</label> <span> <select name="attack_strategies_e[]" id="strategy_e_4"> <option value="">How effective was it?</option> <option value="0">0</option> <option value="1">1</option><option value="2">2</option> <option value="3">3</option><option value="4">4</option> <option value="5">5</option><option value="6">6</option> <option value="7">7</option><option value="8">8</option> <option value="9">9</option><option value="10">10</option> </select> </span> </li>
解决方法
你是对的.实际上,
input
element [HTML4 spec]不能有任何孩子:
<!ELEMENT INPUT - O EMPTY -- form control -->
您可以使用closest
[docs]查找祖先li,然后从那里搜索范围:
$(this).closest('li').find('span').css('display','block');
可能还有其他方法可以找到跨度,但这取决于您的HTML结构,我们不知道.