Как выбрать этот конкретный элемент td и его текст с помощью Jquery - PullRequest
4 голосов
/ 25 февраля 2012

Я хочу изменить "Да! Выбери меня" на "Выбрал" с помощью Jquery в следующей структуре HTML, я использовал $('#myDiv>table>tr>td>table>tr').eq(1).text("Picked"); Но это не работало. Может ли кто-нибудь пролить свет на это, пожалуйста? Спасибо!

К вашему сведению, первый тд первой таблицы содержит еще одну таблицу ...

 <div id="myDiv">
    <table>
      <tr>
        <td>
          <table>
            <tr>
              <td>Yes! Pick me!</td>

              <td>Not me..</td>
            </tr>

            <tr>
              <td>Not me..</td>
            </tr>
          </table>
        </td>

        <td>Not me..</td>
      </tr>

      <tr>
        <td>Not me..</td>
      </tr>
    </table>
  </div>

Раздел $('#myDiv>table>tr>td>table>tr>td').eq(1).text("Picked"); добивается цели, я забыл последнюю часть тд. Спасибо Rocket и всем за помощь.

Ответы [ 6 ]

7 голосов
/ 25 февраля 2012

Попробуйте это:

$("#myDiv table table td:first").text("Picked")
4 голосов
/ 25 февраля 2012
$('#myDiv').find('table table td').eq(0).text(...);

Начните свой выбор с элемента #myDiv ($('#myDiv')), затем найдите все элементы TD, которые находятся внутри таблицы, которая находится внутри другой таблицы (.find('table table td')), затем измените только первый (.eq(0)).

Документация:

0 голосов
/ 25 февраля 2012

Ваш дочерний запрос селектора не будет работать, потому что HTML5 требует, чтобы парсер вставил <tbody> элементы в ваши <table> элементы, так как вы забыли поместить их в себя. Возможно, вам стоит рассмотреть возможность проверки вашего HTML?

0 голосов
/ 25 февраля 2012

Вы можете использовать селектор: contains (text)

$('#myDiv td table td:contains(Yes! Pick me!)').text('Picked');

Однако будьте осторожны с вложенными таблицами, потому что если бы вы использовали просто

$('#myDiv td:contains(Yes! Pick me!)').text('Picked');

, вы бы получили обе ячейкиВаш после плюс ячейка, в которую он вложен.

0 голосов
/ 25 февраля 2012

Вы можете попробовать:

$("td:contains('Yes! Pick me!')").text("Picked"); ​
0 голосов
/ 25 февраля 2012

Основная проблема в том, что вы хотите, чтобы .eq(0) не .eq(1), поскольку .eq() основано на 0, и вы не выбираете td, только tr.

Кроме того, использование > прямых потомков делает ваш выбор совсем не надежным.

Попробуйте $('#myDiv table table td').eq(0).text('Picked');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...