我一直在研究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');
}
答案 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参数,检查将无法正常工作。
在给出一些事件处理程序之后,您的上述代码将起作用。