私は現在jQueryを独学しています(昨日から始めました)が、すでに立ち往生しています。相互に関連して機能する小さなドロップダウンを作成するためにこれを持っています。
$(document).ready(function(){
var selTxt = 0;
$(".button").click(function(){
alert($(this).prev(".button").attr("id"));
$(".text").slideUp(150);
$(this).next(".text").slideToggle(150,function(){
selTxt = $(this).prev(".button").attr("id");
});
});
});
jQuery を知っている人は、ボタンをクリックすると単にテキスト ボックスが展開され、展開された他のすべてのテキスト ボックスが非表示になることに気付くでしょう。
質問:
alert()
関数が呼び出されている場所を見てください。その行で、ifステートメントを実行したい..次のようなもの:
$(".button").click(function(){
if($(this).attr("id") == selTxt){
$(".text").slideUp(150);
$(this).next(".text").slideToggle(150,function(){
selTxt = $(this).prev(".button").attr("id");
});
}
});
したがって、クリックされた要素とselTxt
等しくない場合にのみ実行したいのです。id
したがって、if ステートメントの $(this) は (私が望んでいた).button
クリックされていることを参照しますが、何を推測しますか: そうではありません! 誰も私に理由を教えてもらえませんか? .button
$(this) を下に参照したので、そこでも使用できると思いましたが、明らかにそうではありません。
古き良きJSFiddleがここにあります。
前もって感謝します。