2013-07-04 10 views
8

Desidero impostare un elemento div in modo che non sia selezionabile e quindi impostarlo su selezionabile dopo aver fatto clic su un altro elemento.Impostare l'elemento su non selezionabile e quindi su selezionabile

Così, quando si fa clic su .case:

$('.case').click(function() { 
$('#patient').addClass('active').on('click'); 
}); 

Ma come faccio a impostare #patient al cliccabile in prima istanza quando ho più in basso:

$('#patient').click(function() { 
alert('clicked'); 
}); 
+0

Che cosa significa "selezionabile"? Intendi avere un evento click? Intendi dire "cursore: puntatore"? – AlexQueue

+0

per accettare un evento click .. – IlludiumPu36

risposta

28
$('#patient').on('click', function() { 
    if ($(this).hasClass('active')) { 
     // do whatever when it's active. 
    } 
    return false; 
}); 

Se vuoi solo che non accetti, puoi aggiungerlo al tuo css (pointer-events):

#patient { pointer-events: none; } 
#patient.active { pointer-events: auto; } 
+0

Grazie, posso vedere come potrebbe funzionare, ma mi chiedevo se c'era un modo per impostare un elemento per non acctare eventi click ... Darò la tua soluzione a provare in nel frattempo. – IlludiumPu36

+1

È stato aggiunto il css che interromperà l'evento click nella maggior parte dei browser: http://caniuse.com/#feat=pointer-events – kalley

+0

Quattro giorni su SO e già 581 punti ...! Bene, ora hai di più, molte grazie per il tuo aiuto! – IlludiumPu36

5
$('#patient').unbind("click"); 

Spero che funzioni.

+1

Questo funziona per me! Grazie! – shaosh

+0

È una soluzione pulita! – greentec

0

Usa grilletto

$('#patient').addClass('active').trigger('click'); 

RIFERIMENTO: .trigger()

2

a seconda delle necessità (solo un elemento o molti, la creazione elemento dinamico o meno) si può usare:

1) Una variabile a controlla se il primo clic sull'altro elemento è stato eseguito

var isActive = false; 

$('.case').click(function() { 
    isActive = true; 
}); 

$('#patient').click(function(){ 
    if(isActive === false) 
     return false; 

    //Your behaviour 
}); 

2) Definire la funzione di scatto in caso click del primo elemento

$('.case').on('click',function() { 
    //Make element clickable 
    $('#patient').on('click',function(){ 
     //Your behaviour 
    }); 
}); 

Quindi è possibile utilizzare off per rimuovere l'evento click

1
for first instance..add deactive class to patient div tag... 

$('#patient').click(function() { 
if($(this).hasClass('deactive')) 
return; 
else 
//do what you want to do. 
}); 

on case click... 

$('.case').click(function() { 
$('#patient').removeClass('deactive'); 
}); 
2

non cliccabile:

$("#ElementName").css("pointer-events","none"); 

cliccabile :

$("#ElementName").css("pointer-events","auto"); 
Problemi correlati