2016-11-22 106 views
0

好吧,我试图实现一些简单的东西,但它似乎无法正常工作。我基本上是试图获得这个字体真棒图标内部的价值。获取元素里面的元素

<div class='last_split'> 
    <i class='fa fa-trash-o' aria-hidden='true'></i> 
    <p style='display: none;' class='row_id'>".$row["ID"]."</p> 
    <p style='display: none;' class='table_name'>".$txt."</p> 
</div> 

现在既然有很多像这样的字体真棒输出,我需要找到我点击的那个。 我现在面临的问题很简单,它不会返回值。它只是返回一个空警报。

$(".fa-trash-o").click(function() { 
    var id = $(this,".row_id").val(); 
    var table = $(".table_name").text(); 
    alert(id); 
}); 

回答

0

首先,你正在使用的上下文选择是在另一个找到一个元素,然而p不是i的孩子,这样就不会被发现。相反,您可以使用siblings()

其次,val()用于表单元素以获取其值。 p元素没有值。大概你想得到的文字,所以text()是你所需要的。试试这个:

$(".fa-trash-o").click(function() { 
    var id = $(this).siblings('.row_id').text(); 
    var table = $(".table_name").text(); 
    alert(id); 
}); 
+0

为什么不''.next()'? –

+1

'下一个()','兄弟姐妹()'...皮肤猫的很多方法。 –

+0

下次,你谈论剥皮猫,你会得到处理。说“狗”而不是“猫”! ':D' –

1

你必须使用siblings()next()在这种情况下不find()

$(".fa-trash-o").click(function() { 
var id = $(this).next(".row_id").text(); 
alert(id); 
}); 

而且.val()是输入表单元素,它会在内部寻找.value的财产。所以我们必须使用.text()而不是那个。

FYI:$(this, "selector")类似于$(this).find('selector')

0

var id = $(this,".row_id").val();是没有意义和段落没有价值

你想要的元素是兄弟,所以你应该使用next()text()

$(this).next().text() 

var id = $(this).siblings(".row_id").text(); 
var table = $(this).siblings(".table_name").text(); 
1

所以row_id类在技术上并不在它的内部,但它的兄弟姐妹,你想针对这样的:

$(this).next('.row_id).text(); 
$(this).next('.table_name).text(); 

,因为它们都是<p>标签,你应该抓住.text.html,.val()只适用于表单元素,如输入或文本区域