gordon_shamway
@gordon_shamway

Как найти текст и изменить значение соседнего тега через jquery?

К примеру есть такая таблица
<table style="width:100%">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
    <th>Age</th>
  </tr>
  <tr>
    <td class="name">Jill</td>
    <td>Smith</td> 
    <td class="number">50</td>
  </tr>
  <tr>
    <td class="name">Eve</td>
    <td>Jackson</td> 
    <td class="number">94</td>
  </tr>
   <tr>
    <td class="name">Bob</td>
    <td>Jackson</td> 
    <td class="number">977</td>
  </tr>
   <tr>
    <td class="name">Ron</td>
    <td>Jackson</td> 
    <td class="number">9</td>
  </tr>
   <tr>
    <td class="name">Mike</td>
    <td>Jackson</td> 
    <td class="number">94</td>
  </tr>
</table>

мне нужно найти эти имена ["Jill","Ron","Bob"] и изменить их числа на 100
$(document).ready(function(){
		var array = ["Jill","Ron","Bob"];
		for (var i = array.length; i >= 0; i--) {
			//code...
		}
	})

Как это можно реализовать?
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
Stalker_RED
@Stalker_RED
Если обязательно нужно использовать вашу заготовку с for, то можно так
$(document).ready(function(){
  var array = ["Jill","Ron","Bob"];
  for (var i = array.length; i >= 0; i--) {
    $('.name:contains("'+array[i]+'")').siblings('.number').text(100) 
  }
})
https://jsfiddle.net/pnjyjrgL/

Но можно и в один проход
var array = ["Jill","Ron","Bob"];
$('.name').each(function(){
  var elem = $(this)
  if (array.indexOf(elem.text()) !== -1)  {
  	elem.siblings('.number').text(100) 
  }
})
https://jsfiddle.net/pnjyjrgL/1/

И вообще без jQuery
var array = ["Jill","Ron","Bob"];
Array.prototype.forEach.call(
	document.querySelectorAll('.name'), function(name) {
  if (array.indexOf(name.innerHTML) !== -1)  {
  	name.closest('tr').querySelector('.number').innerHTML = 100
  }
})
https://jsfiddle.net/pnjyjrgL/3/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Gregpopov
Full stack web developer
if($('.name').text() === 'some text'){
    $(this).parent('tr').children('.number').text(100)
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы