ボックスにスライドダウン効果をトリガーする設定ボタンがあるボックスを使用して Web サイトを構築しています。
コードをより複雑で短くするために、ボタンとスライドダウンボックスは、id ではなく、クラスごとに生成する必要があります (現在のように)。
最終的にはいくつかのボタン (btn1、btn 2、btn3 など) とボックス (box1、box2、box3 など) になるため、jQuery コードを短くするために、すべてのボタンをトリガーするのではなく、各ボタンを個別にトリガーする全体的なコードが必要です。同時に。ユーザーがウィジェットを追加できるPHPを計画しているため、クラスによってトリガーされる必要があります。
ここに私の例があります: http://www.danieldoktor.dk/test/test.html
私のコードはこれです:
HTML
<div class="lists">
<header class="box_header" id="box1">
<h1>HEADER 1</h1>
<div class="setting" id="btn1"></div>
</header>
</div>
<div class="lists">
<header class="box_header" id="box2">
<h1>HEADER 2</h1>
<div class="setting" id="btn2"></div>
</header>
</div>
jQuery
// widget 1
$("#btn1").click(function () {
if(!$("#box1").hasClass('header-down')){
$("#box1").stop().animate({height:'100px'},{queue:false, duration:600, easing: 'linear'}).addClass('header-down');
}
else{
$("#box1").stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
}
});
$(document).click(function() {
if($("#box1").hasClass('header-down')){
$("#box1").stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
}
});
$("#box1").click(function(e) {
e.stopPropagation(); // This is the preferred method.
// This should not be used unless you do not want
// any click events registering inside the div
});
// widget 2
$("#btn2").click(function () {
if(!$("#box2").hasClass('header-down')){
$("#box2").stop().animate({height:'100px'},{queue:false, duration:600, easing: 'linear'}).addClass('header-down');
}
else{
$("#box2").stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
}
});
$(document).click(function() {
if($("#box2").hasClass('header-down')){
$("#box2").stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
}
});
$("#box2").click(function(e) {
e.stopPropagation(); // This is the preferred method.
// This should not be used unless you do not want
// any click events registering inside the div
});
ID ではなくクラスを使用して全体的なスクリプトを作成し、各クラスを一意の ID として制御するにはどうすればよいでしょうか? 私が欲しいものを説明するこのpsydoクラスを参照してください:
// widget overall
$(".someBtnClass").click(function () {
if(!$(".someBoxClass").hasClass('header-down')){
$(".someBoxClass").stop().animate({height:'100px'},{queue:false, duration:600, easing: 'linear'}).addClass('header-down');
}
else{
$(".someBoxClass").stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
}
});
$(document).click(function() {
if($(".someBoxClass").hasClass('header-down')){
$(".someBoxClass").stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
}
});
$(".someBoxClass").click(function(e) {
e.stopPropagation(); // This is the preferred method.
// This should not be used unless you do not want
// any click events registering inside the div
});