我试图将“this”从单击的span传递到一个jQuery函数,然后可以在单击的元素的第一个子元素上执行jQuery。似乎不能得到它的权利…

<p onclick="toggleSection($(this));"><span class="redClass"></span></p>

Javascript:

function toggleSection(element) {
  element.toggleClass("redClass");
}

我如何引用元素的:第一个子元素?


当前回答

如果你想马上要第一个孩子,你需要

    $(element).first();

如果你想在你的元素的dom中指定第一个元素,那么使用下面的方法

    var spanElement = $(elementId).find(".redClass :first");
    $(spanElement).addClass("yourClassHere");

试试:http://jsfiddle.net/vgGbc/2/

其他回答

如果你想将选择器应用到现有jQuery集提供的上下文,请尝试find()函数:

element.find(">:first-child").toggleClass("redClass");

Jørn Schou-Rode注意到你可能只想找到context元素的第一个直接后代,因此是子选择器(>)。他还指出,你也可以使用children()函数,它与find()非常相似,但只搜索层次结构中的一个深度(这就是你所需要的…):

element.children(":first").toggleClass("redClass");

请像这样使用 首先,给标签p起一个类名,比如myp

然后使用下面的代码

$(document).ready(function() {
    $(".myp").click(function() {
        $(this).children(":first").toggleClass("classname"); // this will access the span.
    })
})
element.children().first();

找到所有的孩子,先下手为强。

这可以用一个简单的魔术来完成,就像这样:

$(":first-child", element).toggleClass("redClass");

参考:http://www.snoopcode.com/jquery/jquery-first-child-selector

如果你想马上要第一个孩子,你需要

    $(element).first();

如果你想在你的元素的dom中指定第一个元素,那么使用下面的方法

    var spanElement = $(elementId).find(".redClass :first");
    $(spanElement).addClass("yourClassHere");

试试:http://jsfiddle.net/vgGbc/2/