3

考虑到我有这样的元素:

<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 产生:2/1/2013

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

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

由于 JavaScript 错误,Console.log 没有产生任何结果:未捕获的类型错误:无法调用未定义的方法“文本”

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

我没看到什么?

4

5 回答 5

7

jQuery 方法称为 parent()

$(".ELLink").click(function (){
        var stringDate = $(this).parent().text().substring(0, 8)
        console.log(stringDate)
    });
于 2013-02-01T16:39:46.933 回答
1

因为 jQuery 对象没有 parentNode 属性。

var stringDate = $(this.parentNode).text().substring(0, 8);
于 2013-02-01T16:39:46.287 回答
0

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

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

$(this).parent().text()...
于 2013-02-01T16:39:43.933 回答
0

为什么不使用:

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

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

于 2013-02-01T16:40:15.850 回答
0

你需要使用parent()not parentNode。像这样:

$(".ELLink").click(function (){
    var stringDate = $(this).parent().text().substring(0, 8)
    console.log(stringDate)
});
于 2013-02-01T16:40:36.473 回答