2017-07-01 5 views
2

Meine Frage unterscheidet sich ein wenig von anderen Fragen, die ich vor allem wollte, aber ich möchte das (aber nicht nur) aktivieren. Hier ist mein syntx:Wie man eine Taste von einer anderen Taste aus aktiviert

$("#second_btn").click(function(){ 
 
     $('#first_btn').addClass('active'); 
 
    })
#first_btn{ 
 
     background-color: green; 
 
    } 
 
    #first_btn:active{ 
 
     background-color: yellow; 
 
    } 
 
    
 
    #first_btn.active{ 
 
    background-color: yellow; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="first_btn"> 
 
    first_btn 
 
    </button> 
 
    <button id="second_btn"> 
 
    second_btn 
 
    </button>

Im Grunde, was ich suche ist, wenn die zweite Schaltfläche geklickt wird ich die erste Taste ausgelöst werden soll, und die Farbe der Schaltfläche (ersten) sollte auch geändert in Gelb, als ob auf die Schaltfläche 1 geklickt wurde.

Hier ist eine jsFiddle Version davon: click here

Können Sie mir helfen, zu identifizieren, was mir fehlt?

+1

Mögliche Duplikat [weitere Schaltflächen klicken Ereignis Ein Knopf Brennen] wollen (https: // Stackoverflow .com/questions/7532320/one-button-fire-another-buttons-click-event) –

+2

Warum versuchen Sie in Ihrem zweiten Button-Klick-Handler die 'aktive' Klasse für nicht existierende Buttons mit der Klasse '#btn' zu setzen? –

+1

was meinst du mit Feuer .. Brauchen Sie ein Klick-Event, um auf den zweiten Knopf gefeuert zu werden ??? – praveen

Antwort

2

was Sie brauchen, ist eine Simulation der Schaltfläche Klick-Aktion: die zweite Schaltfläche verhält sich ähnlich wie die erste.

$("#first_btn").mousedown(function(){ 
    $("#second_btn").addClass("active"); 
    }); 
    $("#first_btn").mouseup(function(){ 
    $("#second_btn").removeClass("active"); 
    }); 

Sie können Ereignis hinzufügen Verkettungs nach dem Hinzufügen/Entfernen von Klasse, wenn Sie eine echte „klicken Sie auf“ Aktion auf den zweiten Knopf

+0

vielen dank für ihre hilfe – Lucas

2

Sie die Klasse auf das falsche Element zu ändern, ändern $('#btn')-$('#first_btn'):

$("#second_btn").click(function(){ 
    $('#first_btn').addClass('active'); 
}); 

Außerdem müssen Sie allgemeinere Klasse verwenden, wie folgt aus:

.active { 
    background-color: yellow; 
} 
+0

Gut entdeckt. Allerdings löste das nicht das Problem – Lucas

+0

es ändert dauerhaft die Hintergrundfarbe zu gelb, was nicht das ist, was ich suche – Lucas

+0

Bitte führen Sie das Code-Snippet und Sie werden sehen, was ich spreche – Lucas

3
$('#btn').addClass('active'); 

Sie habe da einige Fehler: - zuerst #btn löst sich in nichts auf (das ist keine ID in deinem DOM) - du fügst eine Klasse 'aktiv' hinzu also müsstest du diese Klasse in deinen CSSs anstreben. Hinweis änderte ich die ':' (Pseudoelement) für eine (Klasse Selektor)

#first_btn.active{ 
    background-color: yellow; 
} 

es einige Versuche geben und kommen hier, wenn Sie mehr Schwierigkeiten begegnen;)

EDITED '':

Dies kann nicht der beste Ansatz sein, aber es kann helfen, erreichen, was Sie wollen:

$("#second_btn").click(function(){ 
    $('#first_btn').toggleClass('active'); 
    window.setTimeout(function(){ 
    $('#first_btn').toggleClass('active'); 
    }, 100); 
}) 

Was mache ich hier eine ‚aktive‘ Klasse setzt (Malerei auf die Schaltfläche gelb) und nach einer Zeitdauer von 0,1 s econds schaltet diese Klasse wieder um (Wiederherstellung der ursprünglichen Tastenfarbe).

Was denkst du?

+0

ja die obige Syntax macht die erste Schaltfläche Hintergrundfarbe zu gelb, wenn die zweite Schaltfläche ausgelöst wird. Nun, das Problem ist, dass die erste Taste Hintergrundfarbe wird dauerhaft anstelle von kurzer Zeit geändert – Lucas

+0

führen Sie das Code-Snippet und Sie werden sehen, worüber ich spreche – Lucas

+0

@AvaLucas bearbeitet –

1
$("#second_btn").click(function(){ 
    $('#first_btn').click(); 
    $('#first_btn').addClass('active'); 
}) 
#first_btn.active{ 
background-color:yellow; 
} 

Dies wird ein Ereignis auslösen klicken Sie auf die erste Schaltfläche und ändern Sie auch die Farbe in gelb.

definieren dann einen Handler erste Schaltfläche klicken zu handhaben das Ereignis

In der Geige Version zu handhaben u vorgesehen u die aktive Klasse zuweisen falsch ID.Also Trigger ein Click-Ereignis für die erste Schaltfläche hinzufügen.

+0

es dauerhaft ändern die Hintergrundfarbe, die nicht das ist, was ich suche – Lucas

+0

Bitte führen Sie das Code-Snippet und Sie werden sehen, worüber ich spreche – Lucas

+0

Dies wird nur die Farbe ändern, wenn es Klasse aktiv hat .. aber wenn Sie die Klasse aktiv entfernen .. Sie kann andere Standard-CSS haben. @AvaLucas – praveen

1

Sie sollten Stile geben für eine Klasse, so:

#first_btn.active{ // not :active 
    background-color: yellow; 
} 

Und wenn Sie auf einer ersten Schaltfläche klicken, um simulieren möchten, sollten Sie smth hinzufügen.dass wie:

$('#first_btn').click(); 
+0

sieht so aus, als ob das nicht funktioniert. – Lucas

+0

Ich habe es überprüft :) –

+0

vielen dank für ihre hilfe – Lucas

1

Ich nehme an, Sie nicht bemerkt haben, aber in dem jsFiddle Code der jQuery Selektor für die erste Schaltfläche ist falsch, aber in Ihrer Frage hier ist in Ordnung, so werde ich ignorieren.

Das Problem ist, dass Sie eine CSS-Klasse hinzufügen, aber in Ihrem CSS haben Sie Stile für die :activeZustand des Knopfes erklärt, keine Klasse, können Sie diese Erklärung halten und die .active Klasse so Ihre CSS-Code hinzufügen wird wie folgt aussehen:

#first_btn:active, 
#first_btn.active { 
    background-color: yellow; 
} 

diese Klasse Hinzufügen statt ersetzen des Zustand (:active) Sie beide Szenarien abdecken werden, wenn direkt die first_btn klicken und wenn das second_btn klicken.

+0

vielen dank für ihre hilfe – Lucas

Verwandte Themen