如何使用相同的ID检测单击的div文本

时间:2014-01-06 17:36:47

标签: javascript jquery html

$(document).ready(function(){

    $('#peoplelayer').click(function(){
        $("#peoplelayer").each(function(){

            $("#peoplelayer").fadeOut(500);
            var str = $(this).text();
            alert(str);
            //$("#peoplelayer").fadeTo(500,0.6);

            });

    });
});

这是我对所有div使用相同id“#peoplelayer”的代码,当我点击其中一个时,它会以相同的id警告所有div的文本

我怎样才能捍卫这个问题,因为我只需要提醒点击的div,除了我需要给这个div同样的id ???

5 个答案:

答案 0 :(得分:10)

ID是唯一的,因此您不能拥有两个具有相同ID的元素。也许你打算使用课程?

divs 上的id = 'peoplelayer'更改为class = 'peoplelayer',您可以使用以下代码:

$(document).ready(function(){

    $('.peoplelayer').click(function(){
        $(this).each(function(){

            $(this).fadeOut(500);
            var str = $(this).text();
            alert(str);
            //$(".peoplelayer").fadeTo(500,0.6); (I know it's commented, but just in case)
            });
    });
});

答案 1 :(得分:0)

您可以根据需要使用相同的类名作为图像。但是,您的页面上只能有一个给定id的图片。 id对于元素是唯一的。

答案 2 :(得分:0)

您需要做的是将它们更改为类。

因此,而不是id="peoplelayer",更改为class="peoplelayer",然后您就可以这样写。我做了一些改变,我认为这会按照你想要的方式工作。

$('.peoplelayer').click(function(){
        var str = $(this).text();
        $('.peoplelayer').fadeTo(500,0.6);
        $(this).fadeOut(500);
        alert(str);
});

答案 3 :(得分:0)

您的问题是事件处理程序中的每个问题(以及使用您应该使用类的ID)。将元素更改为class="peoplelayer,然后您只需编写:

$(".peoplelayer").click(function(){
    var str = $(this).text();
    $(".peoplelayer").fadeOut(500);
    alert(str);
});

click函数会将相同的单击处理程序附加到具有peoplelayer类的每个元素,因此您在单击处理程序中执行的each是不必要的,并导致每个元素的文本每次点击任何元素时显示。

答案 4 :(得分:0)

好吧,你可以使用类并在它们上使用js。 但您可以选择与$("div[id='peoplelayer']")相同ID的div。

附:给两个元素赋予相同的id不是一个好习惯。 示例fiddle