隐藏<p>并在&lt; a&gt;上显示<textarea>然后按</textarea>的</P>

时间:2013-10-07 18:25:13

标签: javascript jquery html css

我知道标题听起来很容易,但真正的问题是标记。我在一个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();
});

3 个答案:

答案 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();