Jquery - 是否有更短的方法来获取此属性?

时间:2012-01-22 14:11:38

标签: jquery

以下是我获取属性的 jquery

var numeroBat = $(this).parents('td').children('h3').attr('name');

HTML:

<td><h3 name="b0">Title</h3>
<ul><li>THIS....

我的命令很大,我确定有一个更漂亮,更短的方式?

2 个答案:

答案 0 :(得分:1)

以下是我对上述问题的解决方案:

$("h3[name]").attr("name");

这将使用jQuery的CSS Selector来搜索具有属性h3的元素name。当找到这样的元素时,您可以按照自己的示例中的说明,使用.attr("name");

返回属性值

您还可以在“td”元素前面添加以下示例:

$("td h3[name]").attr("name");

希望这就是你所寻求的。

答案 1 :(得分:0)

我认为这是你能得到的最短时间:

var name = $(this).closest("td").children("h3:first").attr("name");

我只是稍微改变了它,以确保它只选择一个父“td”(最近的一个)和一个h3孩子(第一个)。

.closest("td")上升到父链并找到第一个<td>标记。 .children("h3:first")获取第一个<h3>标记为小孩。

如果您认为<h3>中只有一个<td>标记,那么您可以这样做:

var name = $(this).closest("td").find("h3").attr("name");

或者这个:

var name = $(this).closest("td").children("h3").attr("name");

.find().children()之间的区别在于.find()会在<h3>的任何位置找到<td>,但.children()仅查看<td>的直接子女。如果你的标记在未来发生了一些变化,那么一个更灵活,而另一个则更加严格。这取决于你哪个更好。

显然,这与你最初提出的并没有太大的不同,但没有别的办法。你必须有一个操作才能找到合适的父级,一个用于查找<h3>,一个用于获取所需的属性。