Sonntag, Dezember 15, 2019

jQuery finden nächste element mit der Klasse

Ich habe eine ganz einfache Frage, die mich aß 4 Stunden und ist noch nicht gelöst: Wie finden Sie neben Zeitspanne mit bestimmten Klasse mit jQuery?
Ich habe den folgenden html –

<tr>
    <td align="right">Име:&nbsp;</td>
    <td align="left">
         <input type="text" value="<?=$profileSQL['user_name']; ?>" name="user_name" class="input required" />
    </td>
</tr>
<tr>
    <td align="right" colspan="2">
         <span class="error"></span>
    </td>
</tr>

und ich es validieren mit jQuery.
Ich möchte, wenn dort eine Fehlermeldung, erzeugt mit js (nur string), jQuery, um die nächstgelegene span mit Klasse .error und zu text() die Nachricht dort. Ich habe versucht, mit nextAll(), next("span.error") und eine Menge andere Dinge, aber nichts hat mir geholfen.

Vielen Dank im Voraus!

  • Versuchen, die tatsächliche gerenderten html, wie durch den browser (Quelltext anzeigen), sondern das, nehme ich an, php.
  • Was ist der root-Knoten ?
  • das php ist nur ein string, aber ich habe versucht, Ihre Art und Weise und das Ergebnis ist das gleiche @jAndy: root Knoten, ich glaube du meinst die main-container? Es ist Tisch, wenn Sie Fragen, dass
  • Wie kann man den Fehler erkennt? Was ist das element, das (dies), dass Sie ab? Was macht Ihr javascript derzeit Aussehen?
  • function validate() { var err = 0; $("#profileForm").find(".required").each(function(){ var elem = $(this); if(elem.attr("name") == "user_name") { if(!elem.val()) { err++; elem.addClass("errorInput"); elem.next(".error").text(nameErrEmptyMsg); } else if(elem.val().length < 5) { err++; elem.addClass("errorInput"); elem.next(".error").text(nameErrShortMsg); } } else { } }); if(err > 0) { return false; } }
InformationsquelleAutor Emil Avramov | 2011-03-05

4 Kommentare

  1. 2

    Ich weiß, es ist vielleicht nicht genau das, was Sie suchen, aber wenn Sie haben die Eingabe, wie hier:

    var input = $('input[name="user_name"]');

    Dann können Sie nur:

    input.parents('tr').eq(0).next().find('.error').text(nameErrEmptyMsg);
  2. 2

    das problem ist, dass .next() und .nextAll() Suche nur in den durch die Geschwister (Elemente mit dem gleichen übergeordneten).

    Aus der jQuery-Dokumentation:

    Beschreibung: Erhalten Sie alle folgenden
    die Geschwister, die jedes element in dem Satz von
    abgestimmte Elemente, Optional gefiltert
    durch einen Selektor.

    In Ihrem Fall haben Sie:

      <tr> 
         <td> title here</td> 
         <td><input name="user_name"/> </td>
       </tr>
       <tr>
         <td colspan="2">
           <span class="error"></span>
         </td> 
       </tr>

    Als ich verstehe Ihre JQuery-code ausgeführt wird, der auf den Eingang, richtig? In diesem Fall vor dem Aufruf newxt() oder nextAll() sollten Sie zuerst die 2-Stufen, bis die und danach wählen Sie die nächste, weil es ist die, die Sie wollen, zu finden, so:

    hier ist ein Beispiel, um es zu überprüfen:
    http://jsfiddle.net/EM5Gw/

    • paladin, vielleicht könnten Sie erklären, warum das funktioniert dann? jsfiddle.net/wPZgg
  3. 0

    versuchen

      console.log($("td>span").next().find(".error").text())
    • Ich benutze nur IE (andere Browser sind verboten mit php), also ich habe kein Firebug
    • verwenden alert statt console.log, und überprüfen Sie das Ergebnis..
    • Hi, in Bezug auf FIREBUG und IE können Sie FIREBUG-LITE, das funktioniert mit IE6+. Sehen http://getfirebug.com/firebuglite.
  4. 0

    Können Sie die next('span.error'):

    http://jsfiddle.net/wPZgg/

    • Ich habe versucht mit diesem, aber es passiert nichts
    • haben Sie getroffen, einen Blick auf die jsfiddle? ist nicht, was Sie wollen, es zu tun? auch, was für jquery version verwendest du?
    • Update der Geige JamesHalsall, indem Sie Ihre tr drin ist eine Tabelle, die in einem div-so wird es tatsächlich machen. Dann werden Sie feststellen, dass Ihr code nicht funktioniert.

Kostenlose Online-Tests

Ihre Entwicklerrolle