私はしばらくの間Jqueryを使用してきましたが、私は悪い/良い方法に関する質問があります。ここでの取引です。class/idを文字列でキャッチして別個の要素を選択することは悪い習慣と考えられますか?
<span class="а_s_trigger" id="tekst1">text1</span>
<span class="а_s_trigger" id="video1">video1</span>
<div class="a_s_songvideo" id="showvideo1">
<object>
//video1
</object>
</div>
<div class="a_s_songtext" id="showtext1">
<p>
//text1
</p>
</div>
やビデオやテキストのいずれかである要素のクリックで表示/非表示をトリガし、次のjQueryの機能:私たちは、このHTMLを考えてみましょう。
$('.а_s_trigger')
.bind('mouseover',function(e) {
$(this).css({background:'#F3F3F3',cursor:'pointer'});
})
.bind('mouseout',function(e) {
$(this).css({background:'#E6E6E6'});
})
.bind('click',function(e) {
var id=$(this).attr('id');
var status=$(this).attr('id').toString().slice(0,5);
var index=$(this).attr('id').toString().slice(5,7);
var visibility=$('#showtext'+index).css('display');
if(status=='tekst1')
{
if(visibility=='block')
{
$('#showtext'+index).slideUp();
}
else if(visibility=='none')
{
$('#showtext'+index).slideDown();
}
}
else if(status=="video")
{
$('#showvideo'+index).toggle();
}
});
すべてが正常に動作しているが、どのようなバグが、私は、私は要素を選択する方法は、私が必要とされています
var id=this.id;
var status=$(this).attr('id').toString().slice(0,5);
var index=$(this).attr('id').toString().slice(5,7);
var visibility=$('#showtext'+index).css('display');
それは、このような方法で文字列に変数を割り当てるにはOKですか?
$(this).children().siblings().attr('id'); //and so on
私は常にチェーンセレクタを使って要素を選択してみてくださいまたはそれを変更しない動作する場合、私は、」原則に従ってください: 私はjQueryのすべてのセレクタについてですなど素敵な連鎖機能があることを知っています! "?
はクラスが簡単になるだけでなく、要素に複数のクラスを使用できるという事実が、これを最適なソリューションにしています。 –
私は、 "それは変更しないでください"というステートメントに同意していないが、コードをリファクタリングしてよりクリーンで読みやすくすることができれば、改善されている。私は読めないコードがとにかく壊れていると考えます。 – Miquel
@ミケル - あなたが唯一のコードを見て、次にあなたのために働くものがあれば、あなたのために働きます。今チームが関与している場合、その点は – TStamper