2011-09-09 11 views

Odpowiedz

-4

można zrobić coś takiego:

<details id="element"> 
    <p>Details</p> 
</details> 

<script> 
    var isOpen = ($("#element").attr("open") == "open"); 

    alert ("Open = " + isOpen); 
</script> 
+0

Szukam zdarzenia, które będzie uruchamiane, gdy stan zmieni się z otwartego na zamknięty lub odwrotnie. – rolisz

+1

Czy istnieje powód, dla którego nie można skorzystać z wydarzenia onclick? Zawsze możesz spróbować powiązać wydarzenie 'DOMAttrModified'. W obu przypadkach element 'details' jest nowością i nie jest obsługiwany przez wiele przeglądarek, więc trudno powiedzieć, jak to się skończy. –

+1

Cóż, jeśli używam zdarzenia onclick, to mogę użyć dwóch elementów div zamiast szczegółów i podsumowania. To tylko dwie dodatkowe linie jQuery i nie martwię się kompatybilnością z wieloma przeglądarkami. Nie wiedziałem o DOMAttrModified, ale nie sądzę, że działa w Chrome, a element szczegółów nie działa nigdzie poza Chrome :))) – rolisz

5

Można użyć toggle event:

var details = document.querySelector("details") 
 

 
details.addEventListener("toggle", function() { 
 
details.firstChild.textContent = "done" 
 
})
<!doctype html> 
 
<details> 
 
<summary>toggle event</summary> 
 
</details>

+1

Dobrze wiedzieć, że zdarzenie toggle nie wydaje się bańką (?), a atrybut "open" wydaje się być modyfikowany * przed * zdarzeniem. – commonpike

0

Na Jquery

$("#detail-id").on("toggle", function() { 
    //code 
}); 
Powiązane problemy