Mam nieuporządkowaną listę i pod każdą <li>
element Mam <label>
i link do tekstu <label>
.
Na przykład, jeśli kliknę na pierwszy link "Kopiuj tekst", chcę uzyskać "label1", a na drugim chcę "label2".
Wymyśliłem poniższy kod, ale nie działa. Czy ktoś może mi pomóc to naprawić.
Kod HTML :
<ul>
<li>
<label>label1</label>
<a onclick="copyText()">Copy Text</a>
</li>
<li>
<label>label2</label>
<a onclick="copyText()">Copy Text</a>
</li>
</ul>
Kod JS:
function copyText() {
alert($(this).closest("li").children("label").text());
}
Odpowiedzi:
2 dla odpowiedzi № 1Musisz przekazać kontekst elementu i zmienić Text
do .text()
.
onclick="copyText(this)"
function copyText(el) {
alert($(el).closest("li").children("label").text());
}
Możesz po prostu unikać jQuery i pobierać tekst elementu bezpośrednio:
function copyText(el) {
alert(el.previousSibling.textContent);
}
Proponuję zamiast tego używać dyskretnego JavaScriptu i dodawać detektory zdarzeń:
$("li a").on("click", function () {
alert($(this).closest("li").find("label").text());
});