jquery仅在第一个元素上切换多个div

jquery仅在第一个元素上切换多个div,jquery,Jquery,我创建了一个页面,但它只是切换第一个div,其他两个都不起作用。。。不知道为什么!提前谢谢 var levelopen=false; $(document).ready(function() { $('.contentlevel').hide(); $('#levelopener').click(function(){ if(levelopen==false) { $('#levelopener').html('[less]

我创建了一个页面,但它只是切换第一个div,其他两个都不起作用。。。不知道为什么!提前谢谢

var levelopen=false;
$(document).ready(function() {
    $('.contentlevel').hide();
    $('#levelopener').click(function(){
        if(levelopen==false)
        {
            $('#levelopener').html('[less]'); 
            levelopen=true;
        }
        else
        {
            $('#levelopener').html('[more]');
            levelopen=false;
        }
        $(this).next(".contentlevel").slideToggle(100);
        return false;
    });
});

这是因为有多个元素具有相同的id(
levelopener
),id必须是唯一的。使用一个类
levelopener
和选择器
.levelopener
来执行单击事件


另外,使用
$(this)
引用正在单击以进行比较的当前项目,就像您进行切换一样。

这是因为您有多个元素具有相同的id(
levelopener
),id必须是唯一的。使用一个类
levelopener
和选择器
.levelopener
来执行单击事件


另外,使用
$(this)
引用正在单击以进行比较的当前项目,就像您进行切换一样。

您的HTML不正确。页面中所有元素的ID必须是唯一的

试试这个……这里有一个修改过的fiddle,它使用了一个通用的类名而不是id


您的HTML不正确ID必须在页面中的所有元素中都是唯一的

试试这个……这里有一个修改过的fiddle,它使用了一个通用的类名而不是id


不能有多个具有相同id的元素,在引用调用该方法的对象时,应使用
this
对象

经过一番考虑,我决定只需对函数进行一些其他调整:P

var levelopen=false;
$(document).ready(function() {
    $('.contentlevel').hide();
    $('.levelopener').click(function(){
        if($(this).next(".contentlevel").is(":visible"))
            $(this).html('[+]'); 
        else
            $(this).html('[-]');

        $(this).next(".contentlevel").slideToggle(100);
        return false;
    });
});

不能有多个具有相同id的元素,在引用调用该方法的对象时,应使用
this
对象

经过一番考虑,我决定只需对函数进行一些其他调整:P

var levelopen=false;
$(document).ready(function() {
    $('.contentlevel').hide();
    $('.levelopener').click(function(){
        if($(this).next(".contentlevel").is(":visible"))
            $(this).html('[+]'); 
        else
            $(this).html('[-]');

        $(this).next(".contentlevel").slideToggle(100);
        return false;
    });
});

id
s必须是唯一的
,因此您的选择器只抓取第一个。将id更改为类,并在jQuery中使用类选择器

$('.levelopener').click(function(){

id
s必须是唯一的
,因此您的选择器只抓取第一个。将id更改为类,并在jQuery中使用类选择器

$('.levelopener').click(function(){

这是因为您有多个具有相同id的
a
标记。将它们切换到类,它就可以完美地工作


更新了基于注释的代码,以便在单击功能中使用此。

这是因为您有多个具有相同id的a标记。将它们切换到类中,它可以正常工作


更新了基于注释的代码,以便在单击功能中使用此。

一个html页面中不能有相同的ID。

一个html页面中不能有相同的ID。

在html中,所有链接都有相同的ID-levelopener
HTML id应该是唯一的

在HTML中,所有链接都有相同的id-levelopener
HTML id应该是唯一的

+/-切换已断开。。。将
#levelopener
替换为
谢谢:),太快,无法回答。+/-开关已断开。。。将
#levelopener
替换为
这个
谢谢:),回答起来太快了。为什么要返回
false
而不是
event.preventDefault()
?非常感谢这非常有效,我刚刚开始学习jquery,所以现在这似乎是一个愚蠢的错误!干杯@星际编码器,因为这是海报代码的一部分,我没有改变P使用preventDefault有什么特别的优势吗?@jkl9没问题。:)很高兴能提供帮助。为什么返回
false
而不返回
event.preventDefault()
?非常感谢,这非常有效,我刚刚开始学习jquery,所以现在看来这是一个愚蠢的错误!干杯@星际编码器,因为这是海报代码的一部分,我没有改变P使用preventDefault有什么特别的优势吗?@jkl9没问题。:)很高兴能帮上忙。