2016-04-14 60 views
0

我正在使用jQuery插件,但在使用jQuery设置元素时遇到了一些困难。未能使用jQuery设置数据()

我在下面的代码在外部js文件。

var imgtd = $('<td></td>'); 
var img = $('<img src="' + imgdirectory + '16/arrow_up_green.gif" onclick="' + 
    'jQuery.multiselectviewer.reOrderMultiSelectViewer(' + index + ', 1, jQuery(this) 
    .data(\'multiselectEle\'));" alt="Move ' + controlName + ' up in the list">') 
    .data("multiselectEle", i); 
$(imgtd).append(img); 
var dat = img.data(); 
$(row).append(imgtd); 

当我设置一个断点就上线,我可以看到分配给img元素的数据,但是当我检查元素后的页面已经完成加载呼叫的数据()返回null,当点击图像,空值被传递给被调用的函数。

我想这是简单的,我做错了,但它让我卡住了。

回答

0

当设置data-*属性,您应该考虑使用,而不是data()attr()功能,data()更适合于实际读取值,而不是将它们写为mentioned in this related discussion

.attr("data-multiselectEle", i); 

这似乎是working as expected as seen in the example here

enter image description here

+0

遗憾的是不工作的,我认为,由于它拜因g我想分配的对象。它输出'data-multiselectele =“[object Object]”'。我需要将插件选项附加到元素,以便可以从被调用的函数中访问它们。我一直在寻找另一个做类似的插件,当我在该插件生成的对象的控制台中调用.data()函数时,它会显示对象属性。 –

+0

在你的上下文中,“i”是什么?您可能必须使用插件本身的一些功能来定位元素(及其“数据”),然后将更新后的数据添加到该元素中,因为它听起来像您不需要数据属性。 –