Jquery 无法检索数据属性下存储的数据
我正在读取一个名为Tag_Details的内部数组, 如果其长度大于3,我将添加点并将数据存储在与tagid关联的数据属性下,以便以后检索 如果长度大于3,我将添加如下所示的数据 这是我的密码Jquery 无法检索数据属性下存储的数据,jquery,Jquery,我正在读取一个名为Tag_Details的内部数组, 如果其长度大于3,我将添加点并将数据存储在与tagid关联的数据属性下,以便以后检索 如果长度大于3,我将添加如下所示的数据 这是我的密码 displayallVideos(json) function displayallVideos(response) { var videolisthtml = ''; total_records = response.total_count;
displayallVideos(json)
function displayallVideos(response)
{
var videolisthtml = '';
total_records = response.total_count;
var span = '';
for (var i = 0; i < response.Video_details.length; i++)
{
var video_id = response.Video_details[i].video_id;
var video_name = response.Video_details[i].video_name;
var video_file = response.Video_details[i].video_file;
var how_to_video = response.Video_details[i].how_to_video;
var video_created_date = response.Video_details[i].video_created_date
videolisthtml += '<tr class="portlettr" id="tagnames'+video_id+'" data-stuff="" data-id="' + video_id + '">\
<td>' + video_name + '</td>\n\
<td>'+ response.Video_details[i].video_file.split('/').pop() + '</td>\n'
var vd = response.Video_details[i].Tag_Details;
videolisthtml += '<td>\n';
for (var j = 0; j < vd.length; j++)
{
var tag_name = vd[j].tag_name;
span = '<span class="btn btn-sm btn-success btn-circle"></span> ';
if (j < 3)
{
videolisthtml += span.split("</span>").join(tag_name + "</span>");
}
else
{
span = '<span class="btn btn-sm btn-success btn-circle btnredcolor"></span> ';
var valuefromutility = getcommasperatedvalue(vd);
videolisthtml += span.split("</span>").join('...' + "</span>");
$("#tagnames" + video_id).data('stuff', valuefromutility).attr('data-stuff', JSON.stringify(valuefromutility));
break;
}
}
videolisthtml += '</td>\n';
videolisthtml += '<td>' + video_created_date + '</td>\n\
</tr>';
}
$("#videolisttable tbody").html(videolisthtml);
}
function getcommasperatedvalue(arr)
{
var arrayafter3elemnts = '';
for (var i = 0; i < arr.length; i++)
{
if (i > 2)
{
if (i === arr.length - 1)
{
arrayafter3elemnts += arr[i].tag_name;
}
else
{
arrayafter3elemnts += arr[i].tag_name + ',';
}
}
}
return arrayafter3elemnts;
}
$(document).on('click', '.btnredcolor', function(event)
{
var video_id = $(this).closest('.portlettr').data("id");
var vendoritemsdata = $("#tagnames" + video_id).data('stuff');
alert(vendoritemsdata);
});
displayallVideos(json)
功能显示所有视频(响应)
{
var videolisthtml='';
总记录=响应。总计数;
var span='';
对于(变量i=0;i2)
{
如果(i==arr.length-1)
{
ArrayAfter3Elements+=arr[i]。标记名称;
}
其他的
{
ArrayAfter3Elements+=arr[i]。标记名称+',';
}
}
}
返回3个元素后的数组;
}
$(文档).on('click','.btnredcolor',函数(事件)
{
var video_id=$(this).closest('.portlettr').data(“id”);
var vendoritemsdata=$(“#标记名”+视频id).data('stuff');
警报(卖方数据);
});
这是我的小提琴
你能告诉我如何解决这个问题吗?如果你没有对你的数据属性做任何特殊的处理(比如用它来表示json字符串等),你可以用attr('data-stuff')来称呼它,这应该是可行的 data('stuff')调用尝试解析字符串,但也可以缓存该值,因此在再次调用时不会重新检查该值 不过,除此之外,在使用属性时,您的元素实际上并不在页面上,它们只是一个html字符串。我已经将每个元素添加到一个数组中,一旦它们出现在页面上,数组就会被迭代以添加它们 然后
您首先需要数据属性中的一些值谢谢,但我不想要硬编码的值,我正在尝试动态设置它们您确定您的代码通过了设置数据属性的位置吗?另外,
.attr('data-stuff',JSON.stringify())
是不需要的。当你添加属性时,页面上没有元素。这看起来很好,现在我明白了。正如你提到的那样尝试过,但值仍然是空的。再试一次,你做到了“attr('stuff')需要是“attr('data-stuff')”谢谢Craig,但是从你的小提琴上看,值也是空的。对不起,只是再看一次,你的属性中实际上没有任何数据。test是harcoded的,试图动态地设置它$(“#标记名”+视频id)。attr('data-stuff',valuefromputility)。attr('data-stuff',JSON.stringify(valuefromputility));
valuesfromutility["#tagnames" + video_id] = valuefromutility;
if ($(valuesfromutility).length) {
$.each(valuesfromutility, function(element, value){
$(element).attr('data-stuff', value);
});
}