2012-07-31 155 views
5

我试图在列表中的每个元素之后简单地添加一个逗号。JQuery语法错误,无法识别的表达式:,

$('#tag_cloud-2 div.tagcloud a').each(function(){ 
    console.log($(this)); 
    $(", ").after($(this)); 
}); 

控制台吐出标签,所以我知道它正在找到它们。我也尝试过insertAfter,但没有运气。这个接缝应该是这样简单的事情!谢谢你指出我错过了什么。

+0

'“,”'被解释为选择器,因此它是无效的。你的'.after()'的用法也是错误的。请参阅:http://api.jquery.com/after/ – 2012-07-31 17:16:31

+0

我想你的意思是'$(this).after(',');' – neokio 2012-07-31 17:17:25

+0

你在哪里试图写这个?应该将逗号分隔列表发送到控制台还是某件事情? – PCasagrande 2012-07-31 17:17:56

回答

5

$(', ')被视为选择器(无效),因为它无法创建包含字符串的文本节点。

$("<span>, </span>").after($(this));将工作,因为一个有效的标记。

尝试:

$(this).after(', '); 

OR

$(this).append(', '); 

OR

$(this).text(function(i, oldText) { 
    return oldText + ', '; 
}) 
1

jQuery的$()功能完全不是那么回事那样的。在非标记字符串上调用它不会创建包含该字符串的文本节点。

您可以反你的逻辑,从$(this)开始,然后调用after(),虽然:

$(this).after(", "); 

因为after()创建一个新的文本节点,如果它的一个参数是一个非标记字符串。

相关问题