0

我想我可以在调用 jQuery Mobile 的 JavaScript 之前添加这个:

$('section').data('role','page');
$('article').data('role','content');

这样我就可以简单地在我的 HTML 中使用<section>and<article>标记,而不是指定<div data-role="page">and <div data-role="content">

但我认为它不起作用。

4

4 回答 4

3

你可以这样做:

$('section').attr('data-role','page');
$('article').attr('data-role','content');
于 2013-03-21T20:15:00.403 回答
1

为什么需要“数据-”属性?http://api.jquery.com/data/ 它们可能会导致内存泄漏以及其他问题。jQuery 已经有一个内置的“数据”,它正在工作。它不设置数据属性,它使用更好、更有效的方式来存储与 JavaScript 的 DOM 选择器关联的数据。

如果由于某种原因没有内置“数据”,则应该更新 jQuery。这是一个垫片,主要是为了让您了解它是如何工作的。它不是一个完整的填充程序,它只是一种使用数据键元素的选择器存储数据的非常简单的方法。删除元素时我不删除数据,所以我的实现可能会导致内存泄漏。不过,这只是一个例子。

if ($(window).data === undefined) {
    $.fn.data = (function () {
        var storage = {};
        return function data (name, val) {
            var id = $(this).selector;
            storage[id] = storage[id] || {};   
            if (val === void 0) {
                return storage[id][name];
            }
            storage[id][name] = val;
            return $(this);
        }
    }());
}

var foo = $('section').data('role','page');
var bar = $('article').data('role','content');
foo.text(foo.data('role'));
bar.text(bar.data('role'));

http://jsfiddle.net/dETuh/1/

请注意警报没有运行,所以我的垫片甚至没有被使用..

于 2013-03-21T20:45:18.347 回答
1

尝试这个:

头:

<script src="jquery.js"></script>
<script src="YOUR-SCRIPT.js"></script>
<script src="jquery-mobile.js"></script>

你的脚本 JS:

$(document).bind("mobileinit", function(){
    $('section').data('role','page');
    $('article').data('role','content');
    /* OR */
    $('section').attr('data-role','page');
    $('article').attr('data-role','content');
});

参考:http: //jquerymobile.com/demos/1.2.1/docs/api/globalconfig.html

于 2013-03-21T20:19:38.277 回答
1
if ($(window).data === undefined) {
    $.fn.data = (function () {
        var storage = {};
        return function data (name, val) {
            var id = $(this).selector;
            storage[id] = storage[id] || {};   
            if (val === void 0) {
                return storage[id][name];
            }
            storage[id][name] = val;
            return $(this);
        }
    }());
}

var foo = $('section').data('role','page');
var bar = $('article').data('role','content');
foo.text(foo.data('role'));
bar.text(bar.data('role'));
于 2018-05-22T05:43:36.027 回答