2017-01-16 4 views
0

Ich habe eine ziemlich interessante Aufgabe - Ich habe einen externen Player mit Lautstärkeleiste und ich muss klicken Sie auf ausgewählte Stelle dieser Lautstärkeleiste zu imitieren.jquery set Klicken Sie auf ausgewählte Stelle des Elements

Wenn ich auf den Anfang dieser Lautstärkeleiste klicke - wird es eine geringe Lautstärke. Wenn ich auf das Ende dieser Lautstärkeleiste klicke, wird die Lautstärke hoch sein.

Ich weiß, dass ich einen Auslöser für alle Elemente auslösen kann (die gesamte Volumenleiste in meinem Fall $(".volume_bar").trigger("click");) aber wie kann ich einen Klick-Trigger auf den bestimmten Teil des Elements auslösen? Zum Beispiel - so etwas wie dieses $(".volume_bar").trigger("click": {left:30%});

Irgendwelche Ideen?

+0

Ich schlage vor, dass Sie nicht einen simulierten Klick auf das Element auslösen - aber feuern einen Funktionsaufruf basierend auf was dieser Klick tatsächlich tun würde. Wenn beispielsweise ein Benutzer auf die Lautstärkeleiste bei 30% klickt, wird vermutlich eine Funktion ausgelöst, um das Volumen auf diesen Wert zu ändern. Deshalb - anstatt zu versuchen, den falschen Klick auszulösen. Legen Sie einen Funktionsaufruf fest, der das Ergebnis eines tatsächlichen Klicks wäre - möglicherweise mit der gewünschten Menge, die als Argument festgelegt wurde. zB setVolume ('30% '); – gavgrif

+0

Welchen Player benutzen Sie? Normalerweise Spieler bekommen Sie eine API zu rufen Funktionen (wie youtube API usw.) –

+0

@MoshFeu, Leider hat dieser Spieler keine API :( –

Antwort

0

Sie müssen die Position des Elements abrufen und dann einen Klick an der gewünschten Position auslösen. Sie können dafür offset() von jQuery verwenden und die Parameter pageX und pageY des Ereignisses wie definiert definieren here.

Um ein Ereignis an einem bestimmten Ort auslösen, sollte der Code wie folgt aussehen:

var $element = $('#element') 
$element.width() // get the width 
$element.height() // get the height 

var event = new $.Event('click'); 
event.pageX = $element.offset().left + $element.width() * 0.5 
event.pageY = $element.offset().top + $element.height() * 0.5 

$element.trigger(event) // this should click in the middle 

Warnung nicht getestet !!! Wie auch immer, Sie bekommen das Wesentliche ...

Verwandte Themen