Jquery Mobile - 如何在pagebeforechange事件中获取data-url?

6

我想获取触发页面更改的页面的data-url。有什么想法吗?

$(document).bind("pagebeforechange", function ( event , data) {
    // get the data-url of the link that triggered the page change
});
3个回答

8
您可以通过data对象获取用户来源页面的信息:
$(document).bind("pagebeforechange", function ( event , data ) {
    console.log(data.options.fromPage.attr('data-url'));
});​

请注意,由于您绑定到的是document元素而不是单个data-role="page"元素,因此每次页面更改时都会触发两次,一次是fromPage,一次是toPage。每个页面事件的事件处理程序中传递的数据将与其他页面的数据相同。
以下是演示: http://jsfiddle.net/Atfrf/2/

它确实会触发两次,但第二次没有toPage。如果您想要当前页面,您可以随时执行:$.mobile.activePage.attr('data-url')。 - Erdal G.

2

attr方法在一些浏览器上无法正常工作,因此最好使用jqmData方法。 jqmData方法可以在任何命名空间中使用。

$(document).bind("pagebeforechange", function ( event , data ) { console.log(data.toPage.jqmData('url')); });​


0
为什么您不能执行 $(this).parent('div[data-role|="page"]').attr('data-url')

1
目前 OP 正在绑定到 document 元素,因此 this 将指向 document 元素。如果您绑定到类似 [data-role="page"] 的东西,那么您可以使用 this,但由于此事件在两个页面上触发,所以您将在它们自己的事件处理程序中得到两个页面都等于 this - Jasper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接