Как я могу выбрать элемент по имени с помощью jQuery? - PullRequest
1086 голосов
/ 10 июля 2009

Есть столбец таблицы, который я пытаюсь развернуть и скрыть:

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>

Ответы [ 14 ]

3 голосов
/ 23 февраля 2015

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

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

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

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

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

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

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

var tbl = $('#tableID');
var boldElements = $('.bold',tbl);
var rows = $('tr',tbl);
if (rows.length) {
   var row1 = rows[0]; 
   var firstRowCells = $('td',row1); 
}
2 голосов
/ 10 июля 2009

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

$("#tcol1").hide();
0 голосов
/ 19 июня 2019

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

get.elementbyId();
0 голосов
/ 29 декабря 2014
<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>

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

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