Ich teste die slider Ereignisse in jQueryMobile und ich muss etwas fehlen.jQueryMobile: Wie man mit Schiebereignissen arbeitet?
Seitencode ist:
<div data-role="fieldcontain">
<label for="slider">Input slider:</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="100" />
</div>
und wenn ich tun:
$("#slider").data("events");
ich
blur, focus, keyup, remove
Was ich tun möchte, ist zu den Wert einmal Benutzerfreigabe erhalten der Schieberegler
und als
$("#slider").bind("keyup", function() { alert('here'); });
einen Haken zum keyup Ereignis mit absolut nichts :(
muss ich sagen, dass ich fälschlicherweise angenommen die jQueryMobile verwendet jQueryUI Kontrollen, wie es war mein erster Gedanke, aber jetzt tief in den Ereignissen arbeitend kann ich sehen, dass das nicht der Fall ist, nur in Bezug auf CSS Design.
Was kann ich tun?
jQuery Mobile Slider source code auf Git gefunden werden, wenn es jemand als auch eine Seite Test hilft kann bei JSBin
Wie ich verstehe gefunden werden, ist die #slider
die Textbox mit der Wert, also würde ich in den Slider Handle einhaken müssen, wie der generierte Code für diesen Schieberegler ist:
<div data-role="fieldcontain" class="ui-field-contain ui-body ui-br">
<label for="slider" class="ui-input-text ui-slider" id="slider-label">Input slider:</label>
<input data-type="range" max="100" min="0" value="0" id="slider" name="slider" class="ui-input-text ui-body-null ui-corner-all ui-shadow-inset ui-body-c ui-slider-input" />
<div role="application" class="ui-slider ui-btn-down-c ui-btn-corner-all">
<a class="ui-slider-handle ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c" href="#" data-theme="c" role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="54" aria-valuetext="54" title="54" aria-labelledby="slider-label" style="left: 54%;">
<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text"></span>
</span>
</a>
</div>
</div>
01 Ich bekomme nur die
click
Ereignis
$("#slider").next().find("a").data("events");
Fix
Von Ivan Antwort
und die Ereignisse in dem Handler Anker Überprüfung, wir müssen nur:
<div data-role="fieldcontain">
<label for="slider">Input slider:</label>
<input type="range" name="slider" id="slider" value="0" min="0" max="100" />
</div>
und dann
$(document).bind("pagecreate", function(event, ui) {
$('#slider').siblings('.ui-slider').bind('tap', function(event, ui){ makeAjaxChange($(this).siblings('input')); });
$('#slider').siblings('.ui-slider a').bind('taphold', function(event, ui){ makeAjaxChange($(this).parent().siblings('input'));
});
function makeAjaxChange(elem) {
alert(elem.val());
}
Vielen Dank Ivan für die Köpfe hoch.
gefunden Sie genau das gleiche Problem wie ich vor einer Woche. jQMobile schwört zwar, dass sie auf der jQuery UI arbeiten, dies ist jedoch nicht der Fall.Ausgebildet, jQuery mobile Widgets sehen nur wie UI-Widgets aus, folgen jedoch nicht dem gleichen UI-Konzept, das eine Schnittstelle zur Steuerung wie bestimmte Hooks und Eigenschaften bietet spezifische HTML-Attribute, die IMHO ist ziemlich weit weg von nützlichen und potenziell schädlich HTML-Markup. –
Eine ähnliche Lösung wie Ivan: [jquery forum] (http://forum.jquery.com/topic/how-to-execute-javascript-code-when-finger-is-lifted-from-a-slider) Das ist die nur einer arbeitete für mich. – user1127860