私は解決策を考え出しました。これが間違った方法であれば私を修正してください。
私は詳細タグの全てへのonclickイベントを追加した後に渡され、クリックタグ、得られたインデックス番号のインデックスを返す関数thisindex(this)
した/最小化する他の機能closeAll()
は、他のすべての開いているタグを閉じます私たちが以前に得たものと一致するものを除きます。
ここにコードがあります。 jQuery
$(document).ready(function(){
$('details').click(function (event) {
var index = $('details').index(this);
var len = $("details").length;
for(var i=0; i<len; i++){
if(i != index){
$("details")[i].removeAttribute("open");
}
}
});
});
の助けを借りて、同じ
function thisindex(elm){
var nodes = elm.parentNode.childNodes, node;
var i = 0, count = i;
while((node=nodes.item(i++)) && node!=elm)
if(node.nodeType==1) count++;
return count;
}
function closeAll(index){
var len = document.getElementsByTagName("details").length;
for(var i=0; i<len; i++){
if(i != index){
document.getElementsByTagName("details")[i].removeAttribute("open");
}
}
}
<details onclick="closeAll(thisindex(this));">
<summary>1</summary>Demo 1
</details>
<details onclick="closeAll(thisindex(this));">
<summary>2</summary>Demo 2
</details>
<details onclick="closeAll(thisindex(this));">
<summary>2</summary>Demo 3
</details>
この場合は親切ではないマークまで私はより良いアプローチを示唆しています。
あなたはこれまでに何をしようとしたのですか? – Femaref