我知道标题听起来很容易,但真正的问题是标记。我在一个div中有一个链接,也在另一个div中,但是textarea和段落在另一个div中,这就是为什么我在如何显示和隐藏完全不同的标记div中完全不同的标记div中的元素的问题。< / p>
我看到了.parent()
和.children()
以及.siblings()
。但他们无法帮助我,或者我认为我无法帮助那些人。
这是fiddle。
这是我试过的JS:
$(".no_link").click(function(e) {
e.preventDefault();
});
$(".edit_offer").on('click', function() {
$(this).parent().parent().siblings().children("textarea").toggle();
});
答案 0 :(得分:4)
您可以使用这些选择器,但它将依赖于代码中的类username
,就像您在代码中一样:
$(".edit_offer").on('click', function () {
$(this).closest('.username').find("textarea").toggle();
});
<强> jsFiddle example 强>
.closest()
将遍历DOM,直到它遇到具有类username
的元素,然后.find()
将遍历寻找textarea的子项。
答案 1 :(得分:1)
我是使用find()
完成的。 http://jsfiddle.net/SZUT8/2/为了使脚本更准确且面向未来,您可以考虑在段落中添加一个类并进行匹配,如下所示:http://jsfiddle.net/SZUT8/4/
答案 2 :(得分:0)
您始终可以为每个所需元素(在您的情况下为“p”和“textarea”)分配 ID (或类,用于多个)。然后使用您的ID /类为show()
或hide()
方法引用它们,而不是通过parent()
,sibling()
和children()
来浏览DOM。
然后您的点击处理程序只需要以下行:
$('#idOfElement).toggle();