如何使用Jquery将类添加到触发器的上层元素?
我正在研究Jquery手风琴的东西。我想向包含手风琴触发器<a>标记的div添加一个类。你可以看看我的代码。当点击“日本时尚流行视频”标题时,我想添加“第一”类名到第一个“newsitems”类。如何使用Jquery将类添加到触发器的上层元素?
<!-- news items starts-->
<div class="newsitems">
<h3 class="business"> <a href="#" title="expand"><img src="images/expand_icon.gif" alt="collapse" class="collpase" /> Recession fashion in Japan Video</a> </h3>
<p class="timestamp">0100hrs</p>
</div>
<!-- news items ends-->
<!-- news items starts-->
<div class="newsitems">
<h3 class="sports"> <a href="#" title="expand"><img src="images/expand_icon.gif" alt="collapse" class="collpase" /> Murray survives five-set thriller at Wimbledon</a> </h3>
<p class="timestamp">0100hrs</p>
</div>
<!-- news items ends-->
您正在寻找的closest
方法,界河发现含有元素最里面的父。
例如:
$('div.newsItems h3 a').click(function() {
$(this).closest('div.newsItems').addClass('first');
});
$('div.newsitems h3 a').click(function() {
$(this).parent().parent().addClass('first');
});
如果结构的变化,在所有这将无法正常工作。 – SLaks 2010-03-11 22:27:20
好点,我看到你的帖子是最好的+1。 – 2010-03-11 22:47:08
只是一个备选答案。
$('div.newsItems').click(function(e){
if($(e.target).is("IMG")){
$(this).addClass("first");
}
}
编辑:改变了if($(e.target).is("a")){
到IMG
作为SLaks指出,我错过了标记。
@SLaks好点,但只是将“a”改为“img”,它会:) – Mark 2010-03-12 15:23:06
此外,我们应该像添加的东西线下方点击另一触发后删除类:
var dropDown = $(this).parent().next().next(); /* This is configured for my script. Yours may be different*/
$('div.newsitems').not(dropDown).removeClass('first');
'最接近'是一个救星。 – Mark 2010-03-11 22:34:36
是的马克,这也保存了我的:)太阳SLaks – Kemal 2010-03-11 23:10:07