Как выбрать элемент по имени с помощью jQuery?

У меня есть столбец таблицы, который я пытаюсь расширить и скрыть:

Кажется, что jQuery скрывает элементы td когда я выбираю его по классу, но не по имени элемента.

Например, почему:

$(".bold").hide(); // selecting by class works
$("tcol1").hide(); // select by element name does not work

Обратите внимание на HTML ниже, второй столбец имеет одинаковое имя для всех строк. Как я могу создать эту коллекцию, используя атрибут name?

<tr>    
    <td>data1</td>
    <td name="tcol1" class="bold"> data2</td>
</tr>
<tr>    
    <td>data1</td>
    <td name="tcol1" class="bold"> data2</td>
</tr>  
<tr>    
    <td>data1</td>
    <td name="tcol1" class="bold"> data2</td>
</tr>
1083
10 июля '09 в 4:05
источник поделиться
18 ответов

Вы можете использовать селектор атрибутов:

$('td[name=tcol1]') // matches exactly 'tcol1'

$('td[name^=tcol]') // matches those that begin with 'tcol'

$('td[name$=tcol]') // matches those that end with 'tcol'

$('td[name*=tcol]') // matches those that contain 'tcol'
1963
10 июля '09 в 4:21
источник

Связанные вопросы


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

Любой атрибут можно выбрать с помощью [attribute_name=value]. См. Образец здесь:

var value = $("[name='nameofobject']");
191
22 сент. '13 в 22:07
источник

Если у вас есть что-то вроде:

<input type="checkbox" name="mycheckbox" value="11" checked="">
<input type="checkbox" name="mycheckbox" value="12">

Вы можете прочитать все, как это:

jQuery("input[name='mycheckbox']").each(function() {
    console.log( this.value + ":" + this.checked );
});

Отрывок:

jQuery("input[name='mycheckbox']").each(function() {
  console.log( this.value + ":" + this.checked );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="mycheckbox" value="11" checked="">
<input type="checkbox" name="mycheckbox" value="12">
55
09 июля '14 в 21:34
источник

Вы можете получить массив элементов по имени старомодным способом и передать этот массив в jQuery.

function toggleByName() {
  var arrChkBox = document.getElementsByName("chName");
  $(arrChkBox).toggle();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
  <head>
    <title>sandBox</title>
  </head>
  <body>
    <input type="radio" name="chName"/><br />
    <input type="radio" name="chName"/><br />
    <input type="radio" name="chName"/><br />
    <input type="radio" name="chName"/><br />
    <input type="button" onclick="toggleByName();" value="toggle"/>
  </body>
</html>

Примечание: единственный раз, когда у вас возникнет причина использовать атрибут "name", должен быть установлен флажок или радиовходы.

Или вы могли бы просто добавить еще один класс к элементам для выбора. (Это то, что я сделал бы)

function toggleByClass(bolShow) {
  if (bolShow) {
    $(".rowToToggle").show();
  } else {
    $(".rowToToggle").hide();
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
  <head>
    <title>sandBox</title>
  </head>
  <body>
    <table>
      <tr>
        <td>data1</td>
        <td class="bold rowToToggle">data2</td>
      </tr>
      <tr>
        <td>data1</td>
        <td class="bold rowToToggle">data2</td>
      </tr>
      <tr>
        <td>data1</td>
        <td class="bold rowToToggle">data2</td>
      </tr>
    </table>
    <input type="button" onclick="toggleByClass(true);" value="show"/>
    <input type="button" onclick="toggleByClass(false);" value="hide"/>
  </body>
</html>
24
11 июля '09 в 8:25
источник

Вы можете получить значение имени из поля ввода с помощью элемента name в jQuery:

var firstname = jQuery("#form1 input[name=firstname]").val(); //Returns ABCD
var lastname = jQuery("#form1 input[name=lastname]").val(); //Returns XYZ 
console.log(firstname);
console.log(lastname);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="form1" id="form1">
  <input type="text" name="firstname" value="ABCD"/>
  <input type="text" name="lastname" value="XYZ"/>
</form>
20
15 июня '15 в 8:52
источник

Рамки обычно используют имена скобок в формах, например:

<input name=user[first_name] />

К ним можно получить доступ:

// in JS:
this.querySelectorAll('[name="user[first_name]"]')

// in jQuery:
$('[name="user[first_name]"]')

// or by mask with escaped quotes:
this.querySelectorAll("[name*=\"[first_name]\"]")
15
16 окт. '15 в 19:27
источник

Я сделал это, и он работает:

$('[name="tcol1"]')

https://api.jquery.com/attribute-equals-selector/

12
25 марта '15 в 23:27
источник

Здесь простое решение: $('td[name=tcol1]')

5
27 апр. '16 в 21:47
источник

Вы можете использовать любой атрибут в качестве селектора с [attribute_name=value].

$('td[name=tcol1]').hide();
3
31 марта '16 в 15:51
источник

function toggleByName() {
  var arrChkBox = document.getElementsByName("chName");
  $(arrChkBox).toggle();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
  <head>
    <title>sandBox</title>
  </head>
  <body>
    <input type="text" name="chName"/><br />
    <input type="text" name="chName"/><br />
    <input type="text" name="chName"/><br />
    <input type="text" name="chName"/><br />
    <input type="button" onclick="toggleByName();" value="toggle"/>
  </body>
</html>
3
12 авг. '17 в 9:41
источник
function toggleByName() {
  var arrChkBox = document.getElementsByName("chName");
  $(arrChkBox).toggle();
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
  <head>
    <title>sandBox</title>
  </head>
  <body>
    <input type="text" name="chName"/><br />
    <input type="text" name="chName"/><br />
    <input type="text" name="chName"/><br />
    <input type="text" name="chName"/><br />
    <input type="button" onclick="toggleByName();" value="toggle"/>
  </body>
</html>
3
06 июня '19 в 19:41
источник

Лично, то, что я делал в прошлом, это дать им общий идентификатор класса и использовать его для их выбора. Это может быть не идеальным, поскольку у них есть определенный класс, который может не существовать, но он делает выбор намного проще. Просто убедитесь, что вы уникальны в своих классах.

т.е. для примера выше я бы использовал ваш выбор по классу. Лучше всего было бы изменить имя класса от полужирного до "tcol1", поэтому вы не получите никаких случайных включений в результаты jQuery. Если жирный шрифт действительно относится к классу CSS, вы всегда можете указать как в свойстве класса, т.е. "class=" tcol1 bold ".

Таким образом, если вы не можете выбрать по имени, используйте либо сложный селектор jQuery, либо принимайте любое связанное с этим поражение производительности или используйте селекторы классов.

Вы всегда можете ограничить область jQuery, включив имя таблицы, то есть $ ('# tableID>.bold').

Это должно ограничивать jQuery поиском "мира".

Его все еще можно классифицировать как сложный селектор, но он быстро сдерживает любой поиск в таблице с идентификатором "#IDIDID", поэтому сведение к минимуму.

Альтернативой этому, если вы ищете более одного элемента в # таблице1, было бы посмотреть это отдельно, а затем передать его в jQuery, поскольку это ограничивает область действия, но сохраняет бит обработки, чтобы каждый раз просматривать его.

var tbl = $('#tableID');
var boldElements = $('.bold',tbl);
var rows = $('tr',tbl);
if (rows.length) {
   var row1 = rows[0]; 
   var firstRowCells = $('td',row1); 
}
3
23 февр. '15 в 15:16
источник

Вы забыли второй набор кавычек, что делает принятый ответ неправильным:

$('td[name="tcol1"]') 
3
20 нояб. '17 в 22:27
источник

Вы можете получить элемент в JQuery, используя его атрибут ID, например:

$("#tcol1").hide();
2
10 июля '09 в 4:09
источник

Чтобы скрыть все td с именем "tcol1"

$('td[name=tcol1]').hide()
0
07 июля '16 в 12:49
источник

function toggleByName() {
  var arrChkBox = document.getElementsByName("chName");
  $(arrChkBox).toggle();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>

<head>
  <title>sandbox</title>
</head>

<body>
  <input type="text" name="chName" /><br />
  <input type="text" name="chName" /><br />
  <input type="text" name="chName" /><br />
  <input type="text" name="chName" /><br />
  <input type="button" onclick="toggleByName();" value="toggle" />
</body>

</html>
0
07 июня '19 в 15:27
источник

Вы можете использовать функцию:

get.elementbyId();
0
19 июня '19 в 10:08
источник
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    var a= $("td[name=tcol3]").html();
    alert(a);

});

</script>


<table border="3">
<tr>    
    <td>data1</td>
    <td name="tcol1" class="bold"> data2tcol1</td>
</tr>
<tr>    
    <td>data1</td>
    <td name="tcol2" class="bold"> data2tcol2</td>
</tr>  
<tr>    
    <td>data1</td>
    <td name="tcol3" class="bold"> data2tcol3</td>
</tr>
</table>

Это код, который может быть полезен.

-3
29 дек. '15 в 23:48
источник

Посмотрите другие вопросы по меткам или Задайте вопрос