我希望在DATA属性中插入一个包含HTML代码的变量(一个href ... data-content = ...)它不能很好地工作,因为插入的代码会删除一些字符而突然间它不会显示正常。
以下是使用的代码
function uploadProgress(file)
{
var ext = file.split('.').pop();
var fileUrl = '/playerFiles/'+file;
if(ext == 'mp4')
{
var preview = '<video autoplay loop muted width="250"><source src="'+fileUrl+'" type="video/mp4">Your browser does not support the video tag.</video>';
}
else
{
var preview = '<img src="'+fileUrl+'" width="250">';
}
var showtime = $('#'+id).find('td.showtime');
showtime.html('<a href="#" class="preview" data-toggle="popover" data-html="true" data-content="'+preview+'"><i class="fa fa-file-o"></i> Aperçu</a>');
}
我的HTML输出返回:
<a href="#" class="preview" data-toggle="popover" data-html="true" data-content="<img src=" playerfiles="" img_0006.jpg"="" width="250" data-original-title="" title="" aria-describedby="popover45746">"><i class="fa fa-file-o"></i> Aperçu</a>
为什么它不起作用?我该怎么办?
谢谢
答案 0 :(得分:1)
好吧,让我们先解决这个问题:你在预览var中有双引号你应该用&#39; \&#39; e.g:
var preview = '<img src=\"' + url + '\" width=\"250\">';
或更好地使用var
中的单引号var preview = "<img src='" + url + "' width='250'>";
但是我认为在这个attr中存储html不是很好的方法 - 最好只在这里存储url和html在单独的模板中。或在页面加载时渲染隐藏元素
答案 1 :(得分:1)
您的代码存在问题,预览值中有特殊字符。如果您使用下面给出的代码,那么您可以覆盖问题,这不是正确的方法,并避免这种编码风格。使用整数,小字符串值等的数据属性..像HTML或长字符串值等内容使用公共属性或隐藏控件。
function uploadProgress(file)
{
var ext = file.split('.').pop();
var fileUrl = '/playerFiles/'+file;
if(ext == 'mp4')
{
var preview = '<video autoplay loop muted width="250"><source src="'+fileUrl+'" type="video/mp4">Your browser does not support the video tag.</video>';
}
else
{
var preview = '<img src="'+fileUrl+'" width="250">';
}
var showtime = $('#'+id).find('td.showtime');
showtime.html('<a href="#" class="preview" data-toggle="popover" data-html="true" ><i class="fa fa-file-o"></i> Aperçu</a>');
$(".preview").data("content",preview);
}