2014-10-07 64 views
-1

这很有效,但它可以接受多个“点击”类的div。我只想在页面上点击一个div,点击''类。谁能帮我?先谢谢你。如何让一个div单次点击一次?

HTML:

<div class="clicked"> 
    <p>Block 1</p> 
</div> 
<div class="content" style="display:block;"> 
    <p>1Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.</p> 
    <p>Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum.<br/><br/> 
    Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. 
    Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p> 
</div> 
<div class="clickable"> 
    <p>Block 2</p> 
</div> 
<div class="content"> 
    <p>2Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.</p> 
    <p>Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum.<br/><br/> 
    Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. 
    Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p> 
</div> 
<div class="clickable"> 
    <p>Block 3</p> 
</div> 
<div class="content"> 
    <p>3Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.</p> 
    <p>Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum.<br/><br/> 
    Mirum est notare quam littera gothica, quam nunc putamus parum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima. 
    Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.</p> 
</div> 

JQuery的:

$(window).load(function() { 
    $('.clicked, .clickable').on('click', function(){ 
    if ($(this).hasClass('clickable')){ 
     $('.content').hide(); 
     $(this).next().show(); 
     $(this).removeClass('clickable').addClass('clicked'); 
    } 
    else { 
     $(this).next().hide(); 
     $(this).removeClass('clicked').addClass('clickable'); 
    } 
    }); 
}); 
+0

'$( '点击 ')removeClass(' 点击')' - 这会从其他的div删除类。在将类设置为单击的div之前调用它。 – LcSalazar 2014-10-07 18:24:15

回答

2

你去那里。您可以简化代码:

$(function() { 
    $('.clicked, .clickable').on('click', function() { 
     // Remove clicked class from every element. 
     $('.clicked').removeClass('clicked'); 

     // Hide every element with class content 
     $('.content').hide(); 

     // Toggle between the two available classes, and on the same 
     // go show the sibling element with class content. 
     $(this).toggleClass('clickable clicked').next('.content').show(); 
    }); 
}); 

Demo

4

在你的点击处理程序:

$('.clicked').removeClass('clicked'); 
$(this).addClass('clicked'); 
2

似乎所有你需要做的是删除所有 “点击”。只需添加这样一行:

$(window).load(function() { 
    $('.clicked, .clickable').on('click', function(){ 
     if ($(this).hasClass('clickable')){ 
      $('.content').hide(); 
      $(this).next().show(); 
      $('.clicked').removeClass('clicked'); // ADD THIS LINE 
      $(this).removeClass('clickable').addClass('clicked'); 
     } else { 
      $(this).next().hide(); 
      $(this).removeClass('clicked').addClass('clickable'); 
     } 
    }); 
}); 
2

我对你们喜欢4小时前回答了这个问题:d https://stackoverflow.com/a/26239480/3637090

http://jsfiddle.net/9owL9u37/

$('.clickable').on('click', function() { 
    $('.content').hide(); 
    if ($(this).hasClass('clicked')) { 
     $(this).removeClass('clicked'); 
    } else { 
     $(this).next().show(); 
     $(this).addClass('clicked'); 
    } 
}); 
+0

非常感谢你,但我想加载我的网页与第一个div与“点击”类,它似乎不工作..你的代码不会改变可点击/点击div元素的类... – 2014-10-07 18:38:19