[英]accessing an element of a class in jquery not working
我想在jquery中使用$ this访问不同的ID(具有相同的名称),但不起作用。 我想当一个超级英雄被点击时,只有他的朋友,而他本人只改变他们的班级。
<!DOCTYPE html>
<html>
<head>
<title>Try jQuery 2.0.0 Online</title>
<script src="http://code.jquery.com/jquery-2.0.0.min.js"></script>
<script>
$(document).ready(function() {
$('.shikhar').click(function(){
$(this).find('#a').click(function(){
$(this).find('#b').addClass("selected");
$(this).find('#a').addClass("highlight");
});
$(this).find('#b').click(function(){
$(this).find('#a').addClass("selected");
$(this).find('#b').addClass("highlight");
});
});
});
</script>
<style>
.selected {
color:red;
}
.highlight {
background:yellow;
}
</style>
</head>
<body>
<div class="shikhar">
<div id="a">Spiderman</div>
<div id="b">Hulk</div>
</div>
<div class="shikhar">
<div id="a">Superman</div>
<div id="b">Batman</div>
</div>
</body>
</html>
ID属性必须是唯一的。 一旦找到具有匹配ID的第一个元素,JavaScript就会停止搜索。 只需将这些ID更改为类即可:
<div class="a">Spiderman</div>
...
<div class="a">Superman</div>
然后将jQuery选择器改为$('.a')
和$('.b')
:
$(this).find('.a').click(function(){
$(this).find('.b').addClass("selected");
$(this).find('.a').addClass("highlight");
});
您有重复的ID。 ID应该是唯一的。 您可以使用标记:
<div class="shikhar">
<div class="a">Spiderman</div>
<div class="b">Hulk</div>
</div>
<div class="shikhar">
<div class="a">Superman</div>
<div class="b">Batman</div>
</div>
和JS:
$('.shikhar').click(function(){
$(this).find('.a').click(function(){
$(this).next().addClass("selected");
$(this).addClass("highlight");
});
$(this).find('.b').click(function(){
$(this).prev().addClass("selected");
$(this).addClass("highlight");
});
});
您不能对不同的元素使用相同的ID。 仅对一个元素使用ID。
HTML:
<div class="shikhar">
<div class="a">Spiderman</div>
<div class="b">Hulk</div>
</div>
<div class="shikhar">
<div class="a">Superman</div>
<div class="b">Batman</div>
</div>
jQuery的:
$('.shikhar').each(function(){
$(this).on('click','.a, .b',function(){
$(this).closest('.shikhar').children().removeClass('selected highlight');
$(this).addClass('selected');
$(this).siblings().addClass('highlight');
});
});
小提琴:
尝试这个:
$(document).ready(function() {
$('.shikhar >').click(function(){
$(this).addClass("highlight");
$(this).siblings('div').addClass("selected");
});
});
这是您的答案: http : //jsfiddle.net/S5rbz/
但是在同一页面上有更多具有相同id
值的项目是错误的。 因此,将ID替换为class
值。
以后的编辑:另外,我想您要为每个子级删除现有的类,并添加新的类,就好像您继续添加这些类一样,它们将被最后一个命名的类覆盖(也请记住级联规则)声明)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.