【问题标题】:JQuery Syntax error, unrecognized expression: ,JQuery 语法错误,无法识别的表达式:,
【发布时间】:2012-07-31 17:15:26
【问题描述】:

我试图在列表中的每个元素后简单地添加一个逗号。

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

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

【问题讨论】:

  • ", " 被解释为选择器,因此它是无效的。此外,您对.after() 的使用也是错误的。见:api.jquery.com/after
  • 我想你的意思是$(this).after(',');
  • 你想把这个写到哪里?应该将逗号分隔的列表发送到控制台还是什么?
  • 非常感谢。我完全误读了该文档

标签: jquery insertafter


【解决方案1】:

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

但是

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

试试:

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

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

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

【讨论】:

    【解决方案2】:

    jQuery 的$() 函数并不像那样工作。在非标记字符串上调用它不会创建包含该字符串的文本节点。

    你可以颠倒你的逻辑,从$(this)开始,然后调用after(),不过:

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      相关资源
      最近更新 更多