0

快速,简单的问题。我现在有这个功能;

$("#menuopties").click(function(){
$("p").toggle();
});

但是,这会切换每个 p 标签。我只想切换 div #menuopties 下的 p 标签(已单击)

谢谢。

4

5 回答 5

2

您当前的选择器"p"将获取类型的所有元素,p而不是获取p当前对象中的元素。使用find()获取当前元素的后代。您将使用以下方法获取事件对象的来源$(this)

$("#menuopties").click(function(){
   $(this).find("p").toggle();
});

您可以使用jQuery( selector [, context ] )在选择器的上下文中使用传递当前对象

$("#menuopties").click(function(){
   $("p", this).toggle();
});
于 2013-10-18T14:25:56.217 回答
0

更改$('p').toggle();$(this).children('p').toggle();

$(this)引用当前的 jQuery 对象(在这种情况下包装#menuoptiesDOM 元素),因此运行.children()允许您通过任何您想要的选择器过滤其后代元素(在这种情况下p)。

编辑:正如buzzsawddog 指出的那样,重要的是要注意.children()只返回DOM 中下一层的子元素,所以如果你的p标签不是你的直接子元素,#menuopties你应该使用它.find()

于 2013-10-18T14:26:03.253 回答
0

像这样试试

$("#menuopties").click(function(){
$(this).find("p").toggle();
});
于 2013-10-18T14:26:06.410 回答
0

怎么样:

$("p", this).toggle();
于 2013-10-18T14:26:09.640 回答
0

尝试:

$("#menuopties").click(function(){
    $(this).find("p").toggle();
});

希望有帮助。

于 2013-10-18T14:26:14.813 回答