javascript - Hvordan kan jeg velge et element etter navn med jQuery?
Jeg har en tabellkolonne jeg prøver å utvide og skjule. jQuery ser ut til å skjule <td>-elementene når jeg velger det etter class, men ikke etter elementets name.
For eksempel:
$(".bold").hide(); // Selecting by class works.
$("tcol1").hide(); // Selecting by name does not work. [Edit: this is NOT selecting by name! This is selecting by element type.]
Merk HTML-en nedenfor. Den andre kolonnen har samme name for alle rader. Hvordan kunne jeg opprette denne samlingen ved å bruke name-attributtet?
<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>
Svar #1
Du kan bruke jQuerys attributtvelger:
$('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'
Svar #2
Enhver attributt kan velges ved å bruke [attribute_name=value]-måten. Se eksemplet her:
var value = $("[name='nameofobject']");
Svar #3
Hvis du har noe som:
<input type="checkbox" name="mycheckbox" value="11" checked="">
<input type="checkbox" name="mycheckbox" value="12">
Du kan lese alt slik:
jQuery("input[name='mycheckbox']").each(function() {
console.log( this.value + ":" + this.checked );
});
Utdraget:
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">Svar #4
Du kunne få matrisen av elementer etter navn på den gammeldagse måten og sende den matrisen til 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>merknad: den eneste gangen du ville ha en grunn til å bruke «name»-attributtet, bør være for avkrysningsbokser eller radioknapper.
Eller du kan bare legge til en annen klasse til elementene for valg. (Dette er hva jeg ville gjort)
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>Svar #5
Du kan hente navneverdi fra et inputfelt ved å bruke name-elementet i jQuery ved å:
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>Svar #6
Rammeverk bruker vanligvis klamme navn i skjemaer, som:
<input name=user[first_name] />
De kan nås ved:
// 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]\"]")
Svar #7
Jeg har gjort slik, og det fungerer:
$('[name="tcol1"]')
https://api.jquery.com/attribute-equals-selector/
Svar #8
Du glemte det andre settet med anførselstegn, noe som gjør det aksepterte svaret feil:
$('td[name="tcol1"]')
