我是jQuery的新手。我想将css类应用于我的<li>
元素,但它不起作用。任何人都可以帮助我吗?
我的标记是:
<ul class='change'>
<li>companyName</li>
<ul id='uid'>
<li onClick='callTest()'>subcompany</li>
<li onClick='callTest()'>subcompany</li>
<li onClick='callTest()'>subcompany</li>
</ul>
<ul id='uid'>
<li onClick='callTest()'>subcompany2</li>
<li onClick='callTest()'>subcompany2</li>
<li onClick='callTest()'>subcompany2</li>
</ul>
</li>
</ul>
我的问题是,当我调用callTest()
方法时,我想更改<li>
的背景颜色,我尝试这种方式不起作用:
$('#uid li').click(function () {
console.log("call lil...'");
$(this).addClass('selected').siblings().removeClass('selected');
})
它工作正常,但是第一次我选择子公司它已应用selected
类,现在我选择了子公司2 ,因此也应用了selected
但是在这个时候我想删除子公司类。我怎么能这样做?
答案 0 :(得分:1)
问题似乎是您定位所有li
个元素,包括父级,而不是仅定位uid
$('#uid li').click(function () {
console.log("call lil...'");
$(this).addClass('selected').siblings().removeClass('selected');
})
演示:Fiddle
答案 1 :(得分:1)
以这种方式修改HTML:
<ul class='change'>
<li>companyName</li>
<ul id='uid'>
<li>subcompany</li>
<li>subcompany</li>
<li>subcompany</li>
</ul>
</ul>
以这种方式添加这个JS:
$('#uid > li').each(function () {
$(this).on("click", function() {
console.log("call lil...'");
$(this).addClass('selected').siblings().removeClass('selected');
});
});
答案 2 :(得分:0)
实际上工作正常
$('ul li').click(function(){
console.log("call lil...'");
$(this).addClass('selected').siblings().removeClass('selected');
});
以下是演示:JsFiddle
检查你的html文件。一定有问题,包括你的脚本或jquery。
答案 3 :(得分:0)
你的代码是对的。由于您已在头部/身体中添加此脚本,因此无法正常工作。
所以只需将其包裹在$(document).ready(function()..
$(document).ready(function(){
$('ul li').click(function(){
console.log("call lil...'");
$(this).addClass('selected').siblings().removeClass('selected');
})
});
还尝试使用 .on()
这样的事件处理程序
$(document).ready(function(){
$('ul li').on('click', function(){
console.log("call lil...'");
$(this).addClass('selected').siblings().removeClass('selected');
})
});
答案 4 :(得分:0)
删除onclick
处的li
并在文档准备就绪时添加处理程序:
$(document).ready(function(){
$('ul li').click(function () {
console.log("call lil...'");
$(this).addClass('selected').siblings().removeClass('selected');
callTest();
})
});
答案 5 :(得分:0)
$('li').click(function (e) {
$('li').removeClass('selected');
$(e.target).addClass('selected');
})
答案 6 :(得分:0)
这里有一个HTML问题:
<ul class='change'>
<li>companyName
<ul id='uid'>
<li onClick='callTest()'>subcompany</li>
<li onClick='callTest()'>subcompany</li>
<li onClick='callTest()'>subcompany</li>
</ul>
</li> <!-- I moved this one -->
</ul>
关于你的jQuery你可以这样做:
$('ul.change > li').click(function(){ //Only applies to the direct child of ul.change
console.log("call lil...'");
$(this).addClass('selected');
})
答案 7 :(得分:0)
在che click handler中调用callTest()。
答案 8 :(得分:0)
onclick属性。删除那些