如何在pageload和pageshow之前将元素的数据传递到jquery-mobile事件

时间:2013-02-05 00:55:16

标签: jquery jquery-mobile mobile

我希望能够使用直播活动识别和处理链接元数据。所以,如果我有这样的链接:

<a href="#workorder_new" data-city="austin" data-state="tx">Click here</a>

不知何故,我需要将上面的元素(特别是数据属性)放到“live”函数中,然后调用Javascript函数,使用jQuery-mobile live元素,如:

$('[href=#workorder_new]').live('click', function()
{
  var target        = $(this);
  var workorder_new = new workorder_new_controller(target.data);

  $('#workorder_new').bind('pagebeforechange',function(event, ui)
  {
    workorder_new.before();
  });

  $('#workorder_new').bind('pageshow',function(event, ui)
  {
    // var page = event.target.id;
    workorder_new.after();
  });
});

function workorder_new_controller(data)
{
  var city  = data.city;
  var state = data.state;

  this.before = function(){
    // console.log(data);
  }
  this.after  = function(){
    // console.log(data);
    var today    = new Date();
    var tomorrow = new Date(today.getTime() + (24 * 60 * 60 * 1000));
    $('#workorder_new_form [name=due_date]').val(readable_date(tomorrow));
  }
}

所以这只是我正在玩的一些代码,现在尝试将它拼凑在一起。但我觉得我离这里不太合适。有人可以提供一些建议,让我能按预期工作吗?或者至少有一些提示让我走上正确的道路?谢谢!

2 个答案:

答案 0 :(得分:0)

var target = $(this);
var city = target.data('city');
var state = target.data('state');

根据您的jQuery版本,您应该将.live更改为.on,但这是无关的。

答案 1 :(得分:0)

想出来:

var params = {};

$('a').live('click', function(event)
{
  $.each($(event.target)[0].attributes, function(key, value){
    params[value.name] = value.value;
  });
});

$('div[data-role="page"]').live('pageshow',function(event, ui)
{
 console.log(params)
});

来源:http://moorberry.net/blog/link-attributes-jquery-mobile/