javascript - 未捕获错误 : Syntax error, 无法识别的表达式:# Something

标签 javascript jquery

所以我在 React 组件中有以下代码

  handleClick: function(e) {
    e.preventDefault();
    var post = new AisisWriter.Models.Post()

    var title = this.stripHtml($('#post-title').val());
    var content = this.stripHtml($('#post-content').val());

    post.set({title: title, content: content});
    post.save().then(this.created, this.failed);
  },


  stripHtml: function(content){
    if($(content)[0] !== undefined){
      return $(content)[0].textContent;
    }

    return content;
  },

最重要的一点是,我试图删除您尝试发回的任何 HTML,但保留其他符号,例如 # 等 Markdown。

无论如何,#post-content 包含以下内容:# Something 并且显然 Jquery 不喜欢它:未捕获错误:语法错误,无法识别表达式:#Something

我该如何解决这个问题?

JSBin of the issue

最佳答案

让我先从解决方案开始:

function stripHtml(){
  content = strip($('#content').val());
  alert(content);
}

function strip(content){
  var content2 = jQuery.parseHTML(content);
  if(content2[0].data !== undefined){
    // This will remove all the html assuming there is any
    return content2[0].data;
  }

  // Return the content if their is no html
  return content;
}

解释一下,从 jQuery >= 1.9 documentation 开始:

jQuery(htmlString) versus jQuery(selectorString)

在 1.9 之前,如果字符串符合以下条件,则该字符串将被视为 HTML 字符串: 字符串中的任何位置都有 HTML 标记。这有潜力 导致代码无意执行并拒绝有效的选择器字符串。 从 1.9 开始,只有以 a 开头的字符串才被视为 HTML 小于(“<”)字符。 Migrate插件可用于恢复 1.9 之前的行为。

如果已知字符串是 HTML 但可能以任意文本开头 不是 HTML 标签,将其传递给 jQuery.parseHTML() ,它将返回一个 表示标记的 DOM 节点数组。 jQuery 集合可以是 由此创建,例如:$($.parseHTML(htmlString))。这个会 处理 HTML 模板时被认为是最佳实践 例子。文字字符串的简单用法,例如 $("

Testing

").appendTo("body") 不受此更改的影响。

底线:传递给 jQuery() 并以某些内容开头的 HTML 字符串 小于号以外的字符将被解释为选择器。 由于字符串通常不能被解释为选择器,因此最 可能的结果将是抛出“无效的选择器语法”错误 嘶嘶声选择器引擎。使用 jQuery.parseHTML() 解析任意 HTML。

因此您需要使用 jQuery.parseHTML首先运行函数并访问包含所需文本的对象 (0) data 元素。

关于javascript - 未捕获错误 : Syntax error, 无法识别的表达式:# Something,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23958286/

相关文章:

javascript - 弹出窗口关闭不适用于 iframe 内容

javascript - 示例 Todos 应用程序中定义的全局全大写变量是什么?

java - 在JSP中使用jquery ajax没有调用Servlet?

javascript - 单击按钮时切换 Bootstrap 按钮文本?

jquery - Bootstrap 3 : How to make margins responsive?

javascript - 有没有一种方法可以将所有潜在参数保存在一个数组中?

PHP、MYSQL 和 JSON

jquery - 如何在可调整大小的 div 中适应文本及其适当的大小..?

javascript - 过滤一个字段具有多个值的属性 - List.js 和 Filter.js

javascript - 如何在前台弹出 YouTube 视频播放器