Javascript 如果td有任何文本,则附加逗号(,)加html,否则仅附加html
我正在处理一些jQuery代码,我有一些疑问。这就是我到目前为止所做的:Javascript 如果td有任何文本,则附加逗号(,)加html,否则仅附加html,javascript,jquery,html,Javascript,Jquery,Html,我正在处理一些jQuery代码,我有一些疑问。这就是我到目前为止所做的: var html = ''; data.entities.forEach(function (value, index, array) { html += index !== data.entities.length-1 ? value.pais + ', ' : value.pais; }); var rowUpdate = $('#distribuidorBody').find('#td-' + data.i
var html = '';
data.entities.forEach(function (value, index, array) {
html += index !== data.entities.length-1 ? value.pais + ', ' : value.pais;
});
var rowUpdate = $('#distribuidorBody').find('#td-' + data.idToUpdate);
rowUpdate.text() !== "" ? html += ', ' + html : html;
rowUpdate.append(html);
重要的想法是:我可以多次执行相同的代码,这样第一次rowUpdate
就没有任何值了,所以text()
是空的,我会得到一些HTML输出,例如:Country1、Country2、Country3
等等,然后rowUpdate.text()
应该是Country1、Country2、Country3
。因此,如果第二次我运行相同的代码并添加Country4,Country5
,那么rowUpdate.text()
应该是Country1,Country2,Country3,Country4,Country5
。我的代码对吗?如果没有任何帮助?我没有犯错误,但我需要了解我所做的是对还是错。我还想知道这段代码的作用:
rowUpdate.text() !== "" ?: html += ', ' + html;
它不是我的,我在它周围看到它,但不知道它是干什么的 一个可能更好的解决方案是建立一个要显示的项目数组,然后使用
.join(',')
创建文本:
var items = [];
data.entities.forEach(function (value, index, array) {
items.push(value.pais);
});
var displayText = items.join(', ');
$('#distribuidorBody').find('#td-' + data.idToUpdate).html(displayText);
现在是最后一行,因为'#td-'+data.idToUpdate
是一个ID,所以它应该是页面唯一的(如果不是,您应该使它成为唯一的)。如果或一旦这是真的,你可以把它缩短到
$('#td-' + data.idToUpdate).html(displayText);
forEach
的替代方案可以是map
var text = data.entities.map(function(v){ return v.pais }).join(', ');
或减少:
var text = data.entities.reduce(function(a, b){ return {pais: a.pais +', '+ b.pais}}).pais;
对于三元运算符,需要两个表达式:condition?expr1:expr2
更新:在每个值上添加span
var text = data.entities.map(function(v){ return '<span class="countryToDelete">' + v.pais + '</span>' }).join(', ');
var text=data.entities.map(函数(v){return'+v.pais+''}).join(',');
如果我有我在帖子中提到的前一篇文章呢?它将被保留还是将被覆盖?同时在想,现在我需要向数组中的每个项目添加一些
,因为稍后我将允许通过单击每个项目来删除它们,如何删除?这个答案是最好的+1。就是这样。到OP-不附加span类
,也不基于$(“#id-”)查找+text
-这两个都很糟糕-您正在查询表示层的业务逻辑。而是将项目存储在数组中,并向每个项目添加单击处理程序。映射到元素,然后将处理程序附加到元素,而不是字符串。保留对行元素本身的引用,而不是使用选择器来选择它。
var text = data.entities.map(function(v){ return '<span class="countryToDelete">' + v.pais + '</span>' }).join(', ');