Mam taki html:
<div id="1">
<p>
Volume = <input type="text" />
<button rel="3.93e-6" class="1" type="button">Check answer</button>
</p>
<div></div>
</div>
i trochę takich JS:
$("button").click(function () {
var buttonNo = $(this).attr('class');
var correct = Number($(this).attr('rel'));
validate (Number($("#"+buttonNo+" input").val()),correct);
$("#"+buttonNo+" div").html(feedback);
});
Naprawdę chciałbym, gdybym nie musiał mieć klasy = "1" na przycisku (wiem, że klasy numeryczne są nieprawidłowe, ale to jest WIP!), Więc mógłbym określić buttonNo na podstawie identyfikator nadrzędnego div. W prawdziwym życiu jest wiele sekcji wyglądających w ten sposób.
Jak znaleźć identyfikator elementu div, który jest rodzicem przycisku.
Jaki byłby bardziej semantyczny sposób przechowywania odpowiedzi w kodzie przycisku. Chcę, aby kopiowanie i wklejanie bez zepsucia rzeczy przez osoby, które nie są programistami, były maksymalnie niezawodne!
1.
2.
Musi być wiele sposobów! Można by ukryć element, który zawiera odpowiedź, np
A potem miej podobny kod jQuery do powyższego, aby pobrać to:
pamiętaj, że jeśli umieścisz odpowiedź w kodzie klienta, będą mogli ją zobaczyć :) Najlepszym sposobem na to jest sprawdzenie jej po stronie serwera, ale dla aplikacji o ograniczonym zakresie może to nie być problemem.
źródło
$(parent[0]).attr('id')
po tym, jak zrobiłem kilka selektorów nadrzędnych.Spróbuj tego:
źródło
źródło
Aby uzyskać identyfikator nadrzędnego div:
Możesz też nieco zmienić kod:
Teraz nie ma potrzeby stosowania klasy przycisków
wyjaśnienie
eq (0) oznacza, że wybierzesz jeden element z obiektu jQuery, w tym przypadku element 0, a więc pierwszy element. http://docs.jquery.com/Selectors/eq#index
$ (selector) .siblings (siblingsSelector) wybierze całe rodzeństwo (elementy z tym samym rodzicem) pasujące do selektora rodzeństwa http://docs.jquery.com/Traversing / siblings # expr
$ (selector) .parents (parentSelector) wybierze wszystkich rodziców elementów dopasowanych przez selektor, które pasują do selektora nadrzędnego. http://docs.jquery.com/Traversing/parents#expr
Zatem: $ (selector) .parents ('div: eq (0)'); dopasuje pierwszy nadrzędny element div elementów dopasowanych przez selector.
Powinieneś rzucić okiem na dokumenty jQuery, w szczególności selektory i przechodzenie:
źródło
http://jsfiddle.net/qVGwh/6/ Sprawdź to
źródło
Można to łatwo zrobić, wykonując:
Dołączasz to do dowolnego obiektu wewnątrz tabeli i zwróci ci to identyfikator tej tabeli.
źródło
JQUery ma metodę .parents () do poruszania się w górę drzewa DOM, od którego możesz zacząć.
Jeśli jesteś zainteresowany zrobieniem tego w bardziej semantyczny sposób, nie sądzę, że użycie atrybutu REL na przycisku jest najlepszym sposobem semantycznego zdefiniowania „to jest odpowiedź” w twoim kodzie. Poleciłbym coś w ten sposób:
i
Nie do końca jestem pewien, jak działa Twoja weryfikacja i informacja zwrotna, ale masz pomysł.
źródło
find () i najbliższy () wydaje się nieco wolniejszy niż:
źródło
$(this).parent().parent().attr("id");
?