我有以下HTML:
<div id="wrapper">
<div class="p1">
<a href="#" class="quickFlipCta"><img src="Test Pictures/QuestionMark.gif" /></a>
</div>
<div class="p2">
<a href="#" class="quickFlipCta"><img src="Test Pictures/flower.gif" /></a>
</div>
</div>
我有一个在用户点击链接时启动的功能:
$('a').click(function(){
//some code here
});
在函数中,我想访问“wrapper”div。这样做的最佳方式是什么?我试过了:
$('a').click(function(){
$(this).parent().parent().
//modification to wrapper
});
但这似乎不起作用。
答案 0 :(得分:7)
这完全有效,你确定你的点击功能正在被调用吗?
最好的方法是使用id。只需使用$("#wrapper")
你也可以像.closest
一样使用$(this).closest('#wrapper')
,虽然我建议使用id方法而不是.closest
通过调用alert或console.log来检查您的点击功能是否正在调用
$('a').click(function(){
alert("Called");
console.log("Called");
});
答案 1 :(得分:2)
虽然您可以使用链式父$(this).parent().parent()
来遍历树。
最好使用最接近遍历查找匹配选择器的最近父级,因此标记的唯一要求是链接位于div#wrapper
内。
$('a').click(function(){
$(this).closest('div#wrapper')
//modification to wrapper
});
答案 2 :(得分:2)
基于your comment我假设您正在尝试将css更改添加到动画队列中。问题是无法做到这一点,因为css()
调用没有动画,所以css()
调用都会立即发生。
通过执行以下操作,您仍然可以完成您正在尝试的内容:
$('#wrapper').css('visibility','hidden').delay(500).queue(function(next) {
$('#wrapper').css('visibility','visible');
next()
});