Frage

Ich habe einige HTML-Code wie folgt:

<input id="fieldname-1" name="field_name[value][1]" value="1" type="checkbox" />
<input id="fieldname-2" name="field_name[value][2]" value="2" type="checkbox" />
<input id="fieldname-3" name="field_name[value][3]" value="3" type="checkbox" />

Das mag ich wie mit jQuery zuzugreifen:

$('input[field_name]').change( function() { dosomething(); });

ich kann nicht eine Klasse Feld hinzufügen, dies zu tun, indem $('.classname') Aufruf, weil es durch das CCK-Modul von Drupal gemacht wird, und ich möchte nicht, diese Schicht zu dem Thema hinzuzufügen.

Das Beste, was wäre mein Modul eine Klasse für jedes Feld hinzufügen zu lassen. aber eine schnellere Lösung wäre, zu wissen, wie diese Felder durch jQuery zugreifen

War es hilfreich?

Lösung

könnten Sie verwenden der Attributselektor gleich eine genaue Übereinstimmung auf dem name zu tun Attribut.

$('input[name="field_name[value][2]"]').change(func...

Oder wenn Sie wollen alle die <input> Elemente, die mit field_name beginnen, werden Sie das Attribut beginnt mit Wahl .

$('input[name^=field_name]').change(func...

Damit werden alle <input> Elemente auswählen, wo die name Attribut beginnt mit field_name.

Darüber hinaus können Sie :checkbox im Selektor statt input verwenden, wenn sie alle Kontrollkästchen sind.

Auch Sie den gleichen Ansatz verwenden können, aber mit dem ID-Attribut, wenn man wollte.

$('input[id^=fieldname]').change(func...

Andere Tipps

Es scheint, dass Sie einen Fuzzy-Selektor müssen: [Name ^ = value] So etwas wie das könnte genügen:

$('[name^=field_name]').each(function(index,element){
  $(element).change(function(){})
})
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top