2011-09-09 1 views

Répondre

-4

Vous pouvez faire quelque chose comme ceci:

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

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

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

Je cherche un événement qui se déclenche lorsque l'état passe de ouvert à fermé ou vice-versa. – rolisz

+1

Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser l'événement onclick? Vous pouvez toujours essayer de lier l'événement 'DOMAttrModified'. Dans les deux cas, l'élément 'details' est si nouveau et n'est pas pris en charge par de nombreux navigateurs, donc il est difficile de dire comment il finira par fonctionner. –

+1

Eh bien, si j'utilise l'événement onclick que je pourrais aussi bien utiliser deux div au lieu de détails et de résumé. Il n'y a que deux lignes supplémentaires de jQuery et je ne m'inquiète pas de la compatibilité entre navigateurs. Je ne connaissais pas le DOMAttrModified, mais je ne pense pas qu'il fonctionne dans Chrome, et l'élément detail ne fonctionne pas ailleurs que Chrome :))) – rolisz

5

Vous pouvez utiliser le toggle event:

var details = document.querySelector("details") 
 

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

+1

Bon à savoir que l'événement toggle ne semble pas buller (?), et que l'attribut 'open' semble être modifié * avant * l'événement se déclenche. – commonpike

0

Sur Jquery

$("#detail-id").on("toggle", function() { 
    //code 
}); 
Questions connexes