javascript - Unable to Set Element Attribute Using jQuery data() - Stack Overflow

I'm having trouble updating elements from JavaScript. My project is fairly plex but here's a

I'm having trouble updating elements from JavaScript. My project is fairly plex but here's a tiny piece of it:

myWebService(/*...*/)
.done(function (result) {
    var newRows = $(rows).clone();
    $('#drop-placeholder').after(newRows);
    $(newRows).data('test', 'ZZZZZZZZZZZZZZZZZZZZZZZ');
}

Using Chrome, I can watch these statements execute. However, with newRows in the watch window, I can see that the attribute never gets added/updated. And, sure enough, after the call is done, I don't see the specified attribute on my page.

Can anyone see what I might be missing. rows (and therefore newRows) represents any number of table row elements.

I'm having trouble updating elements from JavaScript. My project is fairly plex but here's a tiny piece of it:

myWebService(/*...*/)
.done(function (result) {
    var newRows = $(rows).clone();
    $('#drop-placeholder').after(newRows);
    $(newRows).data('test', 'ZZZZZZZZZZZZZZZZZZZZZZZ');
}

Using Chrome, I can watch these statements execute. However, with newRows in the watch window, I can see that the attribute never gets added/updated. And, sure enough, after the call is done, I don't see the specified attribute on my page.

Can anyone see what I might be missing. rows (and therefore newRows) represents any number of table row elements.

Share Improve this question asked Mar 27, 2013 at 22:46 Jonathan WoodJonathan Wood 67.5k82 gold badges305 silver badges533 bronze badges 3
  • 1 FYI, newRows is already a jQuery object. You don't have to pass it to jQuery again. What do yo mean by "I don't see the specified attribute on my page"? How are you trying to "see" it? – Felix Kling Commented Mar 27, 2013 at 22:50
  • Are you saying I can just do newRows.data()? I thought $() gave me additional options. (I was trying to see it by examining the elements in Chrome.) – Jonathan Wood Commented Mar 27, 2013 at 22:52
  • Yep. .clone returns a jQuery object, as does $(). If you already have a jQuery object, you don't have to pass it to $() again (the same might be for rows, but I don't know what it is). You usually do $('div') instead of $($('div')) right? :) – Felix Kling Commented Mar 27, 2013 at 23:03
Add a ment  | 

2 Answers 2

Reset to default 9

.data() sets background data that is handled purely by jQuery - it does not set HTML attributes.

If you are trying to set an attribute such as data-test in <div data-test="stuff"></div> you need to use .attr("data-test", variable).

The setting the data via jQuery .data() does not set the attribute, only the underlying data store. If you want to change the attribute, you have to use .attr().

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745530050a4631652.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信