我正在尝试清理我的代码,并在脚本中找到许多与以下内容类似的代码段:
$msg.html('<a href="#" data-userName=' + msg.user +
' class="userName" onClick="showCurrUsersMsgs(this);">@' + msg.user + '</a>' + '<span class="timestamp"> <b>·</b> ' +
jQuery.timeago(msg.created_at) +'</span></br>' +
msg.message);
我尝试过像
这样的事情var $userProfile = $('<a href="#" data-userName=' + msg.user +
' class="userName" onClick="showCurrUsersMsgs(this);">@' + msg.user + '</a>');
var $timeStamp = $('<span class="timestamp"> <b>·</b> ' +
jQuery.timeago(msg.created_at) +'</span>');
$msg.html($userProfile + $timeStamp + '</br>' + msg.message);
使其更具可读性,但页面无法正确构建。相反,它显示的内容类似于[Object][Object]
。
为什么会发生这种情况,如何修复此错误?
答案 0 :(得分:3)
这是重构生成html的jQuery代码的一种明确的(很长的)方法:
var $a = $('<a>', {
'href': '#',
'data-userName': msg.user,
'class': 'userName',
'html': '@' + msg.user
}).on('click', function() { showCurrUsersMsgs(this);});
var $span = $('<span>', {
'class': 'timestamp',
'html': '<b>·</b>' + msg.created_at
});
var $p = $('<p>', {html: msg.message});
var $html = $a.add($span).add($('<br>')).add($p);
答案 1 :(得分:0)
你不能添加&#34;两个jQuery对象在一起。您应该将HTML片段构建为字符串,然后将字符串连接在一起:
()
也就是说,如果你真的对清理它有兴趣,你应该停止使用简单的字符串连接来构建HTML。选择一个真正的模板库,如Handlebars,HTMLBars,Jade等。