2016-11-09 2 views
0

Ich habe an einem großen Skript gearbeitet, das die Datenaktion überprüft, und jetzt habe ich einen Hover implementiert, um einige Symbole anzuzeigen; so wie:

<div class="Flag" data-action="mail-flag"><i class="fa fa-flag" aria-hidden="true"></i></div> 

jedoch mit dieser nicht mit Klartext innerhalb und stattdessen ein Symbol, nicht if ($(e.target).attr('data-action')) { nicht wie $(e.target) die <i></i> ist.

Wie kann ich if ($(e.target).attr('data-action')) { zum Arbeiten an der <div>...</div> ohne die data-action="mail-flag" an die <i></i> bekommen?

+0

'$ (e.target) .parent(). Attr ('data-action')' – afuous

+0

Ich dachte darüber nach, aber was ist, wenn das Kind und Elternteil einen 'date-action' Satz haben die Konflikt. Ich bin mir nicht sicher, wie wahrscheinlich das ist, und ich glaube nicht, dass ich das bisher gemacht habe, damit das _could_ funktionieren kann ... Die nächste Zeile in diesem Abschnitt nach dem 'if' ist jedoch 'var action = $ (e. target) .data ('action'), ' –

+0

Eigentlich sollten Sie' $ (e.target) .parents (". Flag") 'verwenden, wenn Sie die Struktur des HTML ändern. Ich verstehe nicht, was Sie mit einem widersprüchlichen "Datenaktions" -Satz meinen; Das Kind hat keine "Datenaktion". – afuous

Antwort

1

Sie können das Element und dann das übergeordnete Element überprüfen. Zuerst prüfen, ob

$(e.target).attr('data-action') 

existiert. Ist dies nicht der Fall, verwenden Sie

$(e.target).parents(".Flag").attr('data-action') 
1

Sie können Ereignisdelegierung verwenden, um auf den Attributwert zuzugreifen.

$('div[data-action]').on('mouseenter', 'i.fa', function(e){ 
    console.log($(e.delegateTarget).data('action')) 
})