繁体   English   中英

访问jQuery中的类的元素不起作用

[英]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');
    });
});

小提琴:

http://jsfiddle.net/me2DE/

尝试这个:

$(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM