考虑到我有这样的元素:
<p class="ELP">2/1/2013 - <a id="EL3" class="ELLink" href="/Event htms/Event.cshtml?title=Okmulgee Public Schools County Professional Day&explanation=Okmulgee Public Schools County Professional Day.&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选择器用于元素的直接父节点,或者我只会使用它。
我没看到什么?
答案 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)
答案 4 :(得分:0)
您需要使用parent()
而不是parentNode
。像这样:
$(".ELLink").click(function (){
var stringDate = $(this).parent().text().substring(0, 8)
console.log(stringDate)
});