我正在尝试使用jQuery将数据属性的每个实例分组到一个列表中,该列表来自页面中每个属性的出现次数.与在新闻栏目中对类别或标签进行分组相似.
例如,我想创建这样的东西:
从这个HTML:
<ul class="categories">
<li data-category="category-1">Category 1</li>
<li data-category="category-1">Category 1</li>
<li data-category="category-1">Category 1</li>
<li data-category="category-1">Category 1</li>
<li data-category="category-1">Category 1</li>
<li data-category="category-2">Category 2</li>
<li data-category="category-2">Category 2</li>
<li data-category="category-2">Category 2</li>
<li data-category="category-3">Category 3</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我怎样才能在jQuery中实现这一点?它甚至可能吗?
我们有这种"奇怪"的情况,当在jquery点击功能中检索时,存储在数据属性(ex data-prodcode)中的某些产品代码(例如11E6)将转换为11000000.像这样的东西:
<a data-prodcode="11E6">click</a>
var code = $(this).data('prodcode');
console.log(code); --> 11000000
Run Code Online (Sandbox Code Playgroud)
关于如何避免这种行为或可能导致这种行为的任何建议?
我在一个元素上使用了html5"data"属性,我想将属性值分配给一个变量,只要它存在并且它不是空的:
var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';
但它不起作用.我总是得到默认值......
我有这个基本的HTML:
<div id ="div1" data-pagenumber="0001">First page</div>
<div id = "div2"></div>
Run Code Online (Sandbox Code Playgroud)
和我的jQuery:
var number = $('#div1').data('pagenumber')
$('#div2').append(number);
Run Code Online (Sandbox Code Playgroud)
小提琴:http://jsfiddle.net/JabUS/
为什么里面的文字div2设置为1?在我看来,像jQuery自动转换我的价值.如何阻止此转换,以便像这样打印0001?
我有一个jquery数据函数的奇怪问题.这是小提琴
正如您所看到的,我更新active数据但我看不到dom data-active属性值的变化,虽然我重新查询活动数据,但它会写入更改后的值.当我检查它时,$ .data()不会更新dom上的属性.
假设我必须记住某个元素的初始高度.我看到的一个常见做法是将该值保存$.data在该元素上.
我不理解这个的好处.为什么不简单地保留一个带有该值的简单变量,或者如果有多个元素则保留带有值的数组?保持代码易于理解.
我正在更改元素的data-demo属性,div当我想在另一个事件中检查它时,它总是显示它的初始值而不是当前值.
这是我正在使用的代码:
$('#showValue').click(function(){
alert($('.value').data('demo'));
});
$('.update').click(function(){
$('.value').text('updated').attr('data-demo', 'updated');
});
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
这是我正在谈论的例子的小提琴:http://jsfiddle.net/f5Cpm/
谢谢.
我经常读这是不好的做法,因为它很难维护,但做的是:
document.getElementsByTagName("h1")[0].foo = {"key":"value"};
Run Code Online (Sandbox Code Playgroud)
与使用推荐的jQuery替代方案相比:
$.data($(document.getElementsByTagName("h1")[0]), "foo", {"key":"value"});
Run Code Online (Sandbox Code Playgroud)
快得多:jsperf
无论data我砍中不可见的类似Firebug调试器,所以从一个"知名度"点有使用任何一个没有什么区别.
问题:
为什么不好的做法直接在元素上存储信息?
我正在创建日历,并且需要能够确定存储的任何unix时间戳日期是否有选择(显示或隐藏)div.event谁data-dates(可以是字符串或数组,具体取决于事件出现的天数)。它们介于表示当前所选月份的开始和结束的Unix时间戳之间。因此,例如:
现在是2013年4月,所以我只希望看到4月发生的事件(1364774400[4月1日午夜]和1367366399[4月30日23:59:59])。
我有很多event股利。他们看起来像这样:
<div class="event" data-dates="[1367539200, 1367625600]">...</div>
<div class="event" data-dates="[1364947200]">...</div>
Run Code Online (Sandbox Code Playgroud)
假设其中一个或多个时间戳记在2013年4月某个时候出现。如何选择它们?
我试图将数据属性设置为以前没有任何值的div.
<div></div>
Run Code Online (Sandbox Code Playgroud)
使用jQuery,第一种方法(数据)不做任何事情,但是attr方法可以正常工作.
var div = $('div');
div.data('superhero_one','batman');
div.attr('data-superhero_two','spiderman');
Run Code Online (Sandbox Code Playgroud)
我错误地使用了数据功能吗?
jquery ×10
jquery-data ×10
javascript ×8
html5 ×2
attributes ×1
calendar ×1
dom ×1
html ×1
store ×1