Javascript 将类添加到包含<;的div中的表中;a>;使用指定的href
在这种情况下,我需要向表中添加一个类,但前提是该表位于id为“mydiv”的div中,并且表中有一行包含Javascript 将类添加到包含<;的div中的表中;a>;使用指定的href,javascript,jquery,html,Javascript,Jquery,Html,在这种情况下,我需要向表中添加一个类,但前提是该表位于id为“mydiv”的div中,并且表中有一行包含 第一个表需要获取新类,第二个和第三个表不需要。要实现这一点,您可以使用has()方法查找表元素,这些元素包含所需的a以及“attribute contains”选择器,以使用myref获取href。试试这个: $('#mydiv table').has('a[href*="myref"]').addClass('myclass'); 搜索名为mydiv-$(“.mydiv”)的类,而不是
第一个表需要获取新类,第二个和第三个表不需要。要实现这一点,您可以使用
has()
方法查找表
元素,这些元素包含所需的a
以及“attribute contains”选择器,以使用myref
获取href
。试试这个:
$('#mydiv table').has('a[href*="myref"]').addClass('myclass');
搜索名为
mydiv-$(“.mydiv”)
的类,而不是搜索ID
更改代码如下:)
$(“#mydiv”).find(“td”).find(“a[href*='myref']”)。parents(“table”).addClass(“myClass”)代码>
.myClass{
背景颜色:浅蓝色;
}
您可以在目标td
上使用closest()
来查找它的父项(表
)。然后$.each()
检查第一个表中的每个td
,并indexOf()
查找href
的特定文本
代码片段:
$(函数(){
$('#mydiv表:first td')。每个(函数(){
if($(this).find('a').attr('href').indexOf('myref')!=-1)
$(this).closest(“表”).addClass(“myclass”);
});
})
.myclass{
背景色:红色;
}
这几乎奏效了。不幸的是,它并不总是第一个表(可能不止一个),所以我将$(“#mydiv table:first td')。
更改为$(“#mydiv td')。
然后它似乎可以工作(类得到应用)。然而,我刚刚注意到,我在这段代码中遇到了以下错误,这使其他javascript无法工作:“TypeError:$(…).find(…).attr(…)未定义”,知道是什么原因吗?没关系,刚刚发现问题,必须将if语句更改为:if($(this).find('a').attr('href')&$(this.find('a')).attr('href').indexOf('myref')!=-1)
这是一种非常简单的方法,可以完成看起来相当复杂的任务。一定要去学习更多jQuery。谢谢。@Kees这是最好的答案,非常优化。我没问题。
<div id='mydiv'>
<a href='blahblah'>Some text</a>
<table>
<tbody>
<tr>
<td><a href="some href">Some text</a></td>
<td><a href="javascript:some javascript containing 'myref' in quotes">Some text</a></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td><a href="some href">Some text</a></td>
<td><a href="javascript:some javascript without match">Some text</a></td>
</tr>
</tbody>
</table>
</div>
<div id='otherdiv'>
<table>
<tbody>
<tr>
<td><a href="some href">Some text</a></td>
<td><a href="javascript:some javascript containing 'myref' in quotes">Some text</a></td>
</tr>
</tbody>
</table>
</div>
$('#mydiv table').has('a[href*="myref"]').addClass('myclass');