jquery li>复选框父级

时间:2015-07-05 12:47:57

标签: jquery

我一直在研究stackoverflow和api.jquery超过1小时,我决定问,因为我在这里缺少一些东西而且我不知道它是什么。

<ul>
    <li>
        <input type="checkbox" **checked**>
        FIRST
    </li>
    <li>
        <input type="checkbox">
        SECOND
    </li>
    <li>
        <input type="checkbox">
        THIRD
    </li>
</ul>

或多或少,就像这样。我默认让第一个输入'检查'进行测试。我想将复选框与其最接近的li相关联(对于将来的Remove-function)。这是我不可能的部分。我尝试了.parent() .closest .prev(),但这一切都没有给我任何东西(我不想要的任何东西)。这是我的js代码,我正在测试的代码:

if($('input').prop('checked')) {
    $(this).parent('li').css('color','red');
}

3 个答案:

答案 0 :(得分:1)

this与代码中的已检查输入无关。它很可能是窗口对象,它不会神奇地获得您在上面选择的内容。

其他问题是你没有找到已检查的输入,你正在选择所有的输入,当你读取道具时,它正在从列表中选择第一个输入,它不会检查所有输入的检查输入。

所以你需要更改你的选择器,你需要使用每个选择器,现在this将是被检查的输入元素。

$('input:checked').each(function(){
    $(this).parent('li').css('color','red');
});

这需要在文档就绪或在页面上呈现元素之后运行。而且不需要每个人,只要告诉你这个,你就可以把电话连接起来。

$('input:checked').parent('li').css('color','red');

请了解标签元素。

答案 1 :(得分:0)

首先,让我们看看你的代码:

// `.prop` does not select elements,
// it returns a property of an element,
// therefore whether the first <input>
// on the page is checked.
if($('input').prop('checked')) {
    // `this` likely does not refer to anything useful
    // Usually, it's only safe to use `$(this)` in `.each`
    // and event handlers.
    $(this).parent('li').css('color','red');
}

我想你想要这样的东西(check it out here):

// Query for all <input>s which are checked
$('input:checked')
// Select their <li> parents
.parent('li')
// Apply CSS (or do whatever you want, e.g. remove())
.css('color','red');

答案 2 :(得分:-1)

首先,如果您要检查document.ready上的条件,您必须找到已经选择的输入,而不给出name参数,检查将无法正常工作。

在给出一些事件处理程序之后,您的上述代码将起作用。