2017-04-27 5 views
0

Ich habe zwei Tasten in einer Spanneden Button Text der gedrückten Taste innerhalb von einem Elemente

<span class="somespan"> 
<button type="button">left</button> 
<button type="button">right</button> 
</span> 

I gesetzt habe ein .on Ereignis bis zu triggern, wenn eine aktiviert wird.

$('.somespan').on("mousedown tap", function() { 
direction = ($(this).text()); 
}) 

Dies ergibt das Ergebnis leftright, da es den Schaltflächentext für alle Schaltflächen bereitstellt. Wie bekomme ich nur den Schaltflächentext für die angeklickte Schaltfläche?

+0

attatch den Hörer auf die Tasten;) – Mazz

+0

So möchten Sie Titel von bestimmten klickten Taste? –

Antwort

1

Das Problem ist, weil Sie das Ereignis an den span angebracht haben. Für this beziehen sich die Elemente auf button, Sie müssen das Ereignis stattdessen an dieses Element anhängen. Versuchen Sie folgendes:

$('.somespan button').on("mousedown tap", function() { 
 
    direction = $(this).text(); 
 
    console.log(direction); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="somespan"> 
 
    <button type="button">left</button> 
 
    <button type="button">right</button> 
 
</span>

Alternativ, wenn Sie haben die span zu wählen, dann können Sie das klickten Element finden, indem event.target statt this verwenden. Beachten Sie die e in den Handler-Funktionsparameter.

$('.somespan').on("mousedown tap", function(e) { 
 
    direction = $(e.target).text(); 
 
    console.log(direction); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="somespan"> 
 
    <button type="button">left</button> 
 
    <button type="button">right</button> 
 
</span>

0

Sie haben den Hörer auf die Tasten attatch :)

$('button').on("mousedown tap", function() { 
    direction = ($(this).text()); 
}) 

oder in der Spanne

$('.somespan').on("mousedown tap","button", function() { 
    direction = ($(this).text()); 
}) 
0

Try

$('.somespan button').on("mousedown tap", function() { 
direction = ($(this).text()); 
}) 

In Ihrem Fall das Hinzufügen, den Sie hinzufügen MouseDown- Ereignis auf die Spanne statt der Taste

0

Ihre Wähler ändern $('.somespan')-$('.somespan>button') zielen auf die spezifischen button.

$('.somespan>button').on("mousedown tap", function() { 
 
    var direction = $(this).text(); 
 
    console.log(direction) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="somespan"> 
 
    <button type="button">left</button> 
 
    <button type="button">right</button> 
 
</span>

+0

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. –

Verwandte Themen