一直困扰我一段时间的东西。
的JavaScript
$('.video-tab-container ul li a').click(function(e) {
var thisClass = $(this).attr('class');
console.log(thisClass);
if ( $('.video-container .video').is('.' + thisClass) ) {
$(this).addClass('test');
}
e.preventDefault();
});
HTML
<div class="video-tab-container clearfix">
<ul>
<li><a class="chinese" href="#">Chinese</a></li>
<li><a class="thai" href="#">Thai</a></li>
<li><a class="english" href="#">English</a></li>
</ul>
</div>
<div class="video-container">
<div class="video chinese"></div>
<div class="video thai"></div>
<div class="video english"></div>
</div>
在if语句中,如何在if语句中创建$(this)
元素?那么,如果语句为真,那么类test
会被添加到具有相应类的.video
中吗?也许我这样做是错的。
答案 0 :(得分:2)
您需要使用:
$(this).closest('.video-tab-container').next()
.find('.video.' + thisClass).addClass('test')
.siblings('.video').removeClass('test');
而不是:
$(this).addClass('test');
因为当前$(this)
被视为您点击的锚点。
<强> Fiddle Demo 强>
答案 1 :(得分:1)
对this
的引用不会因为它在if
语句中而改变。
如果您希望引用this
来更改语句,则需要这样写:
$('.video-tab-container ul li a').click(function(e) {
var thisClass = $(this).attr('class');
console.log(thisClass);
$('.video-container .video').each(function(){
var $this = $(this);
if ($this.is('.' + thisClass) ) {
$this.addClass('test');
}
})
e.preventDefault();
});
答案 2 :(得分:1)
我认为用这个替换你的if语句:
$('.video-container .video.' + thisClass).addClass('test');
会做你想做的事情。就像上面提到的评论者一样,&#34; if&#34;声明并没有改变&#34;这个&#34;是指。
答案 3 :(得分:0)
$('.video-tab-container ul li a').click(function(e) {
var thisClass, video;
thisClass = $(this).attr('class');
console.log(thisClass);
if ((video = $('.video-container .video.' + thisClass)).length !== 0) {
$(video).addClass('test');
}
e.preventDefault();
});