Я уже некоторое время использую Jquery, и у меня есть вопрос, касающийся плохих / хороших практик. Вот сделка. Допустим, у нас есть этот HTML:
<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, которая вызывает скрытие / отображение при клике для элемента, который является видео или текстом.
$('.а_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');
Можно ли назначать переменные для строк таким образом?
Я знаю, что jQuery - это все о селекторах и хороших функциях связывания, таких как:
$(this).children().siblings().attr('id'); //and so on
Стоит ли мне всегда пытаться выбирать элементы с помощью селекторов цепочек или я должен следовать принципу «Если это работает, не меняйте его!»?