2016-06-07 21 views
0

Ich habe den folgenden Code, der mir die ID eines Elements gibt, wenn ich darauf klicke. Ich möchte, dass ich nur die ID eines Elements gebe, wenn ich darauf klicke und nicht, wenn ich auf das zweite Element klicke.wie jquery nur einmal ausgeführt werden kann

$("svg").click(function() { 
    if(this.id!='main_svg') { 
     divs[1]=this.id; 
    } 
}); 

ich mit einem, wenn die Bedingung zur Verwendung eines Flagvariable dachte, aber ich möchte wissen, ob es eine bessere Lösung dieses Problems als die unter

Var flag = 0; 
if($flag==0){ 
    $("svg").click(function() { 
     if(this.id!='main_svg') { 
      alert("second.one "+this.id); 
      divs[1]=this.id; 
      flag=1; 
     } 
    } 
}); 

Antwort

0

Sie die Click-Handler, nachdem es deregistrieren können wurde verwendet.

Siehe http://api.jquery.com/unbind/

EDIT: Es scheint, Ihre Frage umformuliert werden soll, um „wie jquery Lauf für bestimmtes Element zu machen“, um es $("svg")-$("#main_svg")

für ein Element von id, ändern Sie Ihre Wähler laufen zu lassen
0

explizit der Ereignishandler über Allgemeinen off()

entfernen, können Sie einen Ereignishandler nach über die .off()-Funktion, die in Sie entfernen r Fall würde behandelt werden, nachdem es zunächst hieß:

$("svg").click(function() { 
    if(this.id != 'main_svg') { 
     divs[1]=this.id; 
    } 
    // Kill event handler here 
    $('svg').off('click'); 
}); 

:one() Verwendung von höchstens einer einzigen Ausführung zu gewährleisten

Ein bevorzugter Ansatz könnte mit der .one() Funktion zu prüfen sein, die speziell entwickelt wurde, Griff gerade dieses Szenario:

ein(): einen Handler auf ein Ereignis anhängen für die Elemente. Der Handler wird maximal einmal pro Element pro Ereignistyp ausgeführt.

die als würden verwendet:

$("svg").one("click", function() { 
    if(this.id!='main_svg'){ divs[1]=this.id; } 
}); 
2

Verwenden .one()

$("svg").one("click", function() { 
    if(this.id!='main_svg') { 
    divs[1]=this.id; 
} 
}); 
+2

Dies ist die beste Lösung für Ihre Frage, die ich denke, – dazlious

Verwandte Themen