为什么javascript / jQuery不能获得parentNode?

时间:2013-02-01 16:37:28

标签: javascript jquery html click

考虑到我有这样的元素:

<p class="ELP">2/1/2013 - <a id="EL3" class="ELLink" href="/Event htms/Event.cshtml?title=Okmulgee Public Schools County Professional Day&amp;explanation=Okmulgee Public Schools County Professional Day.&amp;dateString=2-1-2013">City Public Schools County Professional Day</a></p>

为什么这个JavaScript / jQuery工作......:

$(".ELP").click(function (){
        var stringDate = $(this).text().substring(0, 8)
        console.log(stringDate)
    });

Console.log产生:2013年2月1日

...而这个JavaScript / jQuery没有?

$(".ELLink").click(function (){
        var stringDate = $(this).parentNode.text().substring(0, 8)
        console.log(stringDate)
    });

由于JavaScript错误,Console.log不会产生任何结果:未捕获TypeError:无法调用未定义的方法'text'

显然,我可以看到它并没有“获得”正确的元素,但为什么呢?不是'a'元素的第一个父节点'p'元素?据我所知,没有(至少没有跨浏览器/平台兼容)的有效css选择器用于元素的直接父节点,或者我只会使用它。

我没看到什么?

5 个答案:

答案 0 :(得分:7)

jQuery方法称为parent()

$(".ELLink").click(function (){
        var stringDate = $(this).parent().text().substring(0, 8)
        console.log(stringDate)
    });

答案 1 :(得分:1)

因为jQuery对象没有parentNode属性。

var stringDate = $(this.parentNode).text().substring(0, 8);

答案 2 :(得分:0)

$(...)不返回DOM元素,它返回一个引用DOM节点的类数组对象。 DOM节点有parentNode。 jQuery实例没有。

如果您需要选择所选元素的直接父母,您可以使用parent()

$(this).parent().text()...

答案 3 :(得分:0)

为什么不使用:

var stringDate = $(this).parent().text().substring(0, 8)

由于您已经在使用jQuery,因此可以使用parent函数。

答案 4 :(得分:0)

您需要使用parent()而不是parentNode。像这样:

$(".ELLink").click(function (){
    var stringDate = $(this).parent().text().substring(0, 8)
    console.log(stringDate)
});