找到这个内部的跨度

sca*_*and 6 jquery

我试图使用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');
});
Run Code Online (Sandbox Code Playgroud)

我知道我需要做的就是让它搜索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>
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 10

你是对的.实际上,input元素[HTML4 spec]不能有任何子元素:

<!ELEMENT INPUT - O EMPTY              -- form control -->
Run Code Online (Sandbox Code Playgroud)

您可以使用closest [docs]查找祖先li,然后span从那里搜索:

$(this).closest('li').find('span').css('display', 'block');
Run Code Online (Sandbox Code Playgroud)

可能还有其他方法可以找到,span但这取决于您的HTML结构,我们不知道.