Frage Wie kann ich ein Element anhand des Namens mit jQuery auswählen?


Habe eine Tabellenspalte, die ich erweitern und ausblenden möchte:

jQuery scheint das zu verstecken td Elemente, wenn ich es durch auswählen Klasse aber nicht nach Element Name.

Zum Beispiel warum:

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

Beachten Sie den folgenden HTML-Code. Die zweite Spalte hat denselben Namen für alle Zeilen. Wie könnte ich diese Sammlung mit dem erstellen name Attribut?

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

959
2017-07-10 01:05


Ursprung


Antworten:


Du kannst den ... benutzen Attribut Wähler:

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

1801
2017-07-10 01:21



Jedes Attribut kann mit ausgewählt werden [attribute_name=value] Weg. Siehe das Beispiel Hier:

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

168
2017-09-22 19:07



Wenn Sie etwas haben wie:

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

Du kannst alles so lesen:

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

Der Ausschnitt:

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


51
2017-07-09 18:34



Sie könnten das Array von Elementen mit dem Namen auf altmodische Weise erhalten und dieses Array an jQuery übergeben.

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>

Hinweis: Das einzige Mal, wenn Sie einen Grund haben, das "Name" -Attribut zu verwenden, sollte für Checkbox- oder Radioeingaben sein.

Oder Sie könnten einfach eine andere Klasse zu den Elementen hinzufügen. (Das würde ich tun)

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>


22
2017-07-11 05:25



Sie können den Namenswert aus einem Eingabefeld mit dem Element name in jQuery abrufen:

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>


18
2018-06-15 05:52



Rahmen normalerweise verwenden Klammernamen in Formen, wie:

<input name=user[first_name] />

Sie können abgerufen werden von:

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

13
2017-10-16 16:27



Ich habe es so gemacht und es funktioniert:

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

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


12
2018-03-25 20:27