2016-03-08 5 views
0

Я стараюсь выбрать элемент td который содержит "Text1" без ввода этого элемента td ID. Таким образом, «Text1» должен иметь фоновый цвет красного цвета в конце. Я пробовал это так, но это не работает.Как выбрать первый ребенок родителя с помощью идентификатора дочернего элемента?

$("#test").parent().closest("td").css("background-color", "red");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
<tr> 
 
    <td> 
 
    <p> 
 
    Text1 
 
    </p> 
 
    </td> 
 
    <td id="test"> 
 
    <p> 
 
    Text2 
 
    </p> 
 
    </td> 
 
</tr> 
 
</table>

https://jsfiddle.net/8wyuggxz/

+0

Название и содержание кажутся противоречащими друг другу. В заголовке указано * использование id дочернего элемента *, тогда как контент говорит *, не указывая этому элементу 'td' идентификатор *. – Harry

+0

с «this td element» i означает элемент td, который содержит «Text1» – Black

ответ

1

вы с использование prev() способ подобный нижеследующий.

$("#test").prev('td').css("background-color", "red");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
     <td> 
 
      <p> 
 
       Text1 
 
      </p> 
 
     </td> 
 
     <td id="test"> 
 
      <p> 
 
       Text2 
 
      </p> 
 
     </td> 
 
    </tr> 
 
</table>

+0

Thx, но это решение не то, что я ищу, так как мне нужно использовать ID для моего решения. – Black

+0

См. Обновление. @EdwardBlack – Azim

+0

Еще один вопрос PLS, что, если я хочу выбрать элемент 'p' сейчас? Как я могу это сделать? Я попробовал '$ (« # test »). Prev ('td'). Closeest (« p »). Css (« background-color »,« red »);' – Black

1

Используйте :contains селектор

$('td:contains("Text1")').css("background-color", "red");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td> 
 
     <p> 
 
     Text1 
 
     </p> 
 
    </td> 
 
    <td id="test"> 
 
     <p> 
 
     Text2 
 
     </p> 
 
    </td> 
 
    </tr> 
 
</table>

+1

Не уверен, пытается ли OP выбрать второй 'td'. Содержимое говорит об этом - * Я пытаюсь выбрать элемент td, который содержит «Text1» *. – Harry

+1

@ Харри, да .. Это тоже возможно ... Пусть он придумает ответ. – Rayon

+0

Я пытаюсь выбрать td, который содержит «Text1», а не «Text2» Я написал: «Итак,« Text1 »должен иметь цвет фона красного цвета " – Black

1

Edit: Вот решение JS с помощью ID:

See this working fiddle

$("#test").parent().find("td:first-child").css("background-color", "red"); 
+0

Thx, но это решение не является тем, что я ищу, поскольку мне нужно использовать ID для моего решения – Black

+0

Я обновил его –

1
  1. Как выбрать первый ребенок родителя с помощью ID дочернего элемента?

  2. Я стараюсь, чтобы выбрать элемент TD, который содержит "Text1"

Решение для обоих запросов.

Фрагменты кода:

$("#test").parent().children('td:first:contains("Text1")').css("background-color", "red"); 

FIDDLE DEMO

Смежные вопросы