在jQuery Mobile中更改页面后从滑块事件接收事件

时间:2013-05-23 11:47:45

标签: jquery-mobile jquery jquery-mobile-slider

在PhoneGap应用中,我通过$.mobile.changePage()功能导航到html页面。

目标页面包含一个滑块输入元素。

我想在更改滑块后计算所选值,但我无法弄清楚如何接收事件。

我查看了jQM演示页面的示例,但它无法正常工作。

以下是包含滑块元素的目标页面的代码:

<!DOCTYPE html>
<html>
<head>
  <title>Home</title>
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
  <meta name="format-detection" content="telephone=no" />

  <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />

  <script type="text/javascript" src="../cordova/cordova-2.7.0-android.js"></script>

  <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  <script type="text/javascript" src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>

  //WRONG RECEIVING SCRIPT?
  <script type="text/javascript">
    $("#volume-slider").on("stop", function (event) {
      var value = event.target.value;
      alert("User has finished sliding my slider, final value: " + value);
    });
  </script>

</head>
<body>
  <div id="homeContainer" data-role="page">
  <div data-role="content">
        <label for="slider-fill">Lautstärke:</label>
        <input id="volume-slider" type="range" name="slider-fill" value="50" min="0" max="100" data-highlight="true" />
  </div>
  </div>
</body>
</html>

难道我必须将接收脚本放在其他地方吗?因为它似乎没有被执行。

谢谢你,Max

1 个答案:

答案 0 :(得分:2)

您的代码中有几处错误:

工作示例:http://jsfiddle.net/Gajotres/JCdGA/

$(document).on('pageinit', '#homeContainer', function(){ 
    $(document).on( "slidestop",  "#volume-slider" ,function( event, ui ) {
        alert('Slide Stop!');
    });       
});
  1. 如果您要绑定活动,则必须在正确的网页活动期间执行此操作,在这种情况下,使用 pageinit
  2. slidestop 是检测滑块移动结束的正确事件。
  3. 如果您使用多种 HTML 页面格式,并且此页面不是初始 HTML ,则此javascript将被丢弃。当 jQuery Mobile 加载新的 HTML 页面时,它只会加载 BODY 内容并丢弃其余内容。阅读更多 here