$('.dragbox').each(function(){
$('.close').click(function(){
$(this).parent().hide();
}),
$('.colpase').click(function(){
$(this).siblings('.dragbox_content').toggle();
})
});
質問する
144 次
5 に答える
3
jqueryがラップされたセット(コレクション)として機能することを考えると、各メソッドが必要だとは思いません。
$('.dragbox').find('.close').click(function(){
$(this).parent().hide();
})
$('.dragbox').find('.colpase').click(function(){
$(this).siblings('.dragbox_content').toggle();
})
ハンドラーは、それぞれを必要とせずに、一致したすべての要素に適用されます。
これにより、.dragboxアイテム内のすべての.closeと.colpaseが検出されます。
パフォーマンスをわずかに向上させるために、findを使用するように編集しました。ダン/アレックスに感謝します。
于 2010-07-05T17:22:45.023 に答える
1
いいえ。おそらく、各ドラッグボックス内の一致する要素にクリック ハンドラーを適用する必要があります。あなたはそれを行うことができます:
$('.dragbox').each(function(){
$('.close', this).click(function(){
$(this).parent().hide();
}),
$('.colpase', this).click(function(){
$(this).siblings('.dragbox_content').toggle();
})
});
ハンドラーをグローバルに追加したいだけなら、each は必要ありません。
于 2010-07-05T17:18:57.030 に答える
1
そこに each() 関数が必要なようには見えません。イベント ハンドラーをオブジェクトに複数回適用している可能性があります。ただ:
$('.close').click(function(){
$(this).parent().hide();
});
$('.colpase').click(function(){
$(this).siblings('.dragbox_content').toggle();
});
トリックを行う必要があります。
于 2010-07-05T17:21:45.253 に答える
0
「親」を「各」の実際の「.dragbox」に言及している場合
$('.dragbox').each(function(){
var self = this;
$(self).find('.close').bind("click", function(){
$(self).hide();
}); // <-- ","?
$(self).find('.colpase').bind("click", function(){
//This line confuses me because you could do the same in the selector for the click event
//unless you do have more things in the function
$(this).siblings('.dragbox_content').toggle();
});
/*
$(self).find('.colpase').siblings('.dragbox_content').bind("click", function(){
$(this).toggle();
});
*/
});
于 2010-07-05T20:41:43.263 に答える
0
function set_colors(pick_color)
{
var color_code=pick_color;
$('#'+ color_owner).parent().css('background-color',color_code);
}
于 2010-07-05T18:25:57.730 に答える