Javascript 动态分配数据角色属性

Javascript 动态分配数据角色属性,javascript,jquery-mobile,Javascript,Jquery Mobile,我想在调用jQuery Mobile的JavaScript之前可以添加以下内容: $('section').data('role','page'); $('article').data('role','content'); 这样我就可以在HTML中简单地使用和标记,而不是指定和 但我认为它不起作用。你可以这样做: $('section').attr('data-role','page'); $('article').attr('data-role','content'); 您可以这样做: $

我想在调用jQuery Mobile的JavaScript之前可以添加以下内容:

$('section').data('role','page');
$('article').data('role','content');
这样我就可以在HTML中简单地使用
标记,而不是指定


但我认为它不起作用。

你可以这样做:

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

您可以这样做:

$('section').attr('data-role','page');
$('article').attr('data-role','content');
试试这个:

头部:

<script src="jquery.js"></script>
<script src="YOUR-SCRIPT.js"></script>
<script src="jquery-mobile.js"></script>
$(document).bind("mobileinit", function(){
    $('section').data('role','page');
    $('article').data('role','content');
    /* OR */
    $('section').attr('data-role','page');
    $('article').attr('data-role','content');
});
参考资料:

试试这个:

头部:

<script src="jquery.js"></script>
<script src="YOUR-SCRIPT.js"></script>
<script src="jquery-mobile.js"></script>
$(document).bind("mobileinit", function(){
    $('section').data('role','page');
    $('article').data('role','content');
    /* OR */
    $('section').attr('data-role','page');
    $('article').attr('data-role','content');
});
参考资料:

为什么需要“数据-”属性? 除其他问题外,它们还可能导致内存泄漏。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'));

请注意,警报没有运行,因此我的垫片甚至没有被使用。

为什么需要“数据-”属性?
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'));
除其他问题外,它们还可能导致内存泄漏。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'));



请注意,警报没有运行,因此我的垫片甚至没有被使用。

您的jQuery调用可能在jQuery mobile加载后运行。我可以向jQuery mobile JavaScript添加一个延迟属性,以确保它最后运行吗?请告诉我您何时要添加它,我将为您提供一个示例?它可以通过多种方式完成。我相信它需要在脚本src=“//code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.js”>@MikeLegacy之前运行,那不是我!我向上投票,但不记得曾经向下投票过任何人。你的jQuery调用可能在jQuery mobile加载后运行。也许我可以向jQuery mobile JavaScript添加一个延迟属性,以确保它最后运行?告诉我你想何时添加它,我会给你举个例子?它可以通过多种方式完成。我相信它需要在脚本src=“//code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.js”>@MikeLegacy之前运行,那不是我!我投票支持别人,但不记得曾经投票反对过任何人。哈哈,谢谢你,伙计。没什么不好的感觉,哈哈,我提交后3秒就被否决了。我就像WTF lolWell,你的答案其实是公认的,因为这是最干净的解决方案。谢谢你,伙计,很高兴我能帮上忙。哈哈,谢谢你,伙计。没什么不好的感觉,哈哈,我提交后3秒就被否决了。我就像WTF lolWell,你的答案实际上是被接受的,因为它是最干净的解决方案。谢谢你,伙计,很高兴我能帮上忙。请解释你的答案,不要只发布一段代码。请解释你的答案,不要只发布一段代码。
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'));