Jquery 选择上一个元素

Jquery select previous element

本文关键字:元素 上一个 选择 Jquery      更新时间:2023-09-26

我是Jquery的新手,我已经浏览了这里的回复,但我找不到我的问题的任何具体答案。

我有一个(ASP)生成的表,其中的代码片段是:

<a href="javascript:__doPostBack(&#39;gv2&#39;,&#39;Select$15&#39;)"
style="color:White;">S</a></td><td style="font-size:XX-Small;">1104</td>
<td style="font-size:XX-Small;">320.20.0116.090</td>
<td style="font-size:XX-Small;">*Not Found*</td>

我正在尝试做的是突出显示*未找到文本,然后禁用前面的href,以便无法单击链接。

我开发了以下选择器:-

$('

td').highlight('Not Found').each(function(){$(this).prev("a").removeAttr("href")});

突出显示选择器有效,但删除选择器不起作用。语法可能不正确,但任何指针都非常有用。

回答:- 这有效

$("td:contains('*Not Found*')").each(function(){$(this).parent().find('a').removeAttr("href")})

我个人建议:

// selects all 'td' elements
$('td').filter(function(){
    // retains only those whose text is precisely '*Not Found*'
    return $.trim($(this).text()) == '*Not Found*';
// moves to the closest (ancestor) 'tr'
// finds the 'a' element within that 'tr' element
// sets the 'href' attribute to be equal to '#'
}).closest('tr').find('a').attr('href','#');

JS小提琴演示。

或者,与其将href设置为 # ,不如通过解开其内容的包装来删除 a 元素:

$('td').filter(function(){
    return $.trim($(this).text()) == '*Not Found*';
}).closest('tr').find('a').contents().unwrap();

JS小提琴演示。

引用:

  • attr() .
  • closest() .
  • contents() .
  • filter() .
  • find() .
  • jQuery.trim() .
  • text() .
  • unwrap() .

尝试$(this).prev().find("a").removeAttr("href")}

此外,删除链接可能不起作用。

尝试将 HREF 替换为 #