我怎样才能select一个名称与jQuery元素?

有一个表列我试图扩大和隐藏:

jQuery似乎隐藏的td元素,当我按类而不是元素名称select它。

例如,为什么:

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

注意下面的HTML,第二列对所有行都有相同的名字。 我如何使用name属性创build这个集合?

 <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> 

你可以使用属性select器

 $('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' 

任何属性都可以使用[attribute_name=value]方式进行select。 在这里看到示例:

 var value = $("[name='nameofobject']"); 

如果你有这样的东西:

 <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"> 

你可以通过老式的名字获取元素数组,并将数组传递给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> 

您可以使用jQuery中的名称元素从input字段获取名称值:

 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> 

我已经这样做了,它的工作原理:

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

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

框架通常在表单中使用括号名称 ,如:

 <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]\"]") 

这里有一个简单的解决scheme: $('td[name=tcol1]')

您可以使用任何属性作为[attribute_name=value]select器。

 $('td[name=tcol1]').hide(); 

你可以通过使用它的ID属性来获取JQuery中的元素:

 $("#tcol1").hide(); 

就我个人而言,过去我所做的是给他们一个普通的class级ID,并用它来select它们。 它可能并不理想,因为他们有一个指定的类可能不存在,但它使select地狱更容易。 只要确保你的名字是独一无二的。

即上面的例子,我会用你的select。 更好的办法是将类名从粗体改为“tcol1”,所以不会在jQuery结果中包含任何意外的内容。 如果粗体确实引用了一个css类,那么你可以在类属性中指定 – 即'class =“tcol1 bold”'。

总之,你不能按名称select,要么使用复杂的JQueryselect器,并接受任何相关的性能命中或使用类select器。

你总是可以通过包含表名即ie限制JQuery范围

 $('#tableID > .bold') 

这应该限制JQuerysearch“世界”。

它仍然可以被归类为一个复杂的select器,但是它快速地限制了在表格内用'#tableID'的ID进行search,所以把处理保持在最低限度。

如果你在#table1中寻找1个以上的元素,另一种方法是单独查看这个元素,然后把它传递给JQuery,因为这会限制范围,但是每次都会保存一些处理来查找它。

 var tbl = $('#tableID'); var boldElements = $('.bold',tbl); var rows = $('tr',tbl); if (rows.length) { var row1 = rows[0]; var firstRowCells = $('td',row1); } 

要隐藏名称为“tcol1”的所有td

 $('td[name=tcol1]').hide() 
 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> 
 <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> 

这是可以帮助的代码。