2016-12-27 10 views
2

Ich würde gerne wissen, wie das Onclick-Ereignis einer bestimmten Klasse zu deaktivieren. Mir ist bewusst, dass Sie das CSS pointer-events: none; verwenden können, aber ich möchte, dass die Hover-Ereignisse immer noch funktionieren, klicken Sie einfach darauf, um deaktiviert zu werden.So deaktivieren Sie onclick einer Klasse

Wie kann ich sie später wieder aktivieren? Zum Beispiel:

if (document.getElementById('wuzi').backgroundColor == "green") { 
//disable onclick 
} else { 
//enable onclick 
} 

Danke

Antwort

3

Sie können einfach den Hörer hinzufügen und entfernen zu ‚Klick‘:

var wuzi = document.getElementById('wuzi'); 
if (wuzi.backgroundColor === "green") { 
    wuzi.removeEventListener('click'); 
} else { 
    wuzi.addEventListener('click', clickHandler); 
} 

wo clickhandler Ihre Funktion ist es, den Klick für die Handhabung.

+0

wollen, was der Unterschied ist, Ereignis-Listener klicken und die „Onclick“ -Funktion zwischen dem Hinzufügen. Auch wenn ich mehrere Funktionen hätte, die beim Klicken auslösen könnten (abhängig von der Klasse des Elements), würde ich sie alle im Abschnitt "Mach Sachen hier" auflisten? – mw8475

+0

Sie können onclick verwenden, jedoch kann nur ein Handler registriert werden; Die Dokumentation empfiehlt, addEventListener zu verwenden: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onclick (siehe Abschnitt Hinweise). –

+0

Können Sie erklären, was clickHandler ist? Ist es eine vordefinierte Funktion? – mw8475

1

können Sie versuchen, wie unten:

var element = document.getElementById('wuzi') 
    if (element .backgroundColor == "green") { 
    //disable onclick 
     element.onclick = ''; 
    } else { 
    //enable onclick 
    } 
0

Ich würde vorschlagen, Sie CSS-Klasse hinzuzufügen, statt backgroundColor zu vergleichen, dann setzen überprüfen disabled Eigenschaft basierend auf Klasse

var element = document.getElementById('wuzi'); 
element.disabled = element.classList.contains("foo"); 
0

Onclick Rückkehr falsch versuchen:

var element = document.getElementById('wuzi') 
    if (element .backgroundColor == "green") { 
    //disable onclick by returning false from onclick 
     element.onclick = return false; 
    } else { 
    //enable onclick or do some appropriate action 
    } 
0

Ich hoffe, dass dir das hilft

if (document.getElementById('wuzi').style.backgroundColor === "green") { 
//disable onclick 

this.onclick=null 
} else { 
//enable onclick 
this.onclick=my_function; 
} 

definieren Sie Ihre Funktion, wie Sie

function my_function() 
{ 
    alert('enable'); 
} 
Verwandte Themen