未捕获错误:语法错误,无法识别的表达式:test <a href="http://google.com">http://google.com</a> test

时间:2014-08-12 05:03:22

标签: javascript jquery html kendo-grid

当我们尝试在Kendo网格中绑定文本(可能同时包含纯文本和网址)时,我们会收到“未捕获的错误:语法错误,无法识别的表达式:test http://google.com test”错误

请找到我为网格行绑定的以下方法。

function getLocationLink(data) {   
     if (data.ActionComment != '' && data.ActionComment != 'undefined') {
        var urlText = data.ActionComment; //urlText value is "test http://www.google.com test
        var urlRegex = /(https?:\/\/[^\s]+)/g;
        return urlText.replace(urlRegex, function(url) {
            return '<a href="' + url + '">' + url + '</a>';
        });
      }
    return data.ActionComment;
}

我可以在document.ready中绑定这个锚链接但是上面的函数在document.ready之后执行。所以除了这里我没有任何选项来绑定这个锚链接。 有人可以为此提供解决方案。

1 个答案:

答案 0 :(得分:1)

尝试将结果字符串包装在另一个元素中,例如<span>

var result = urlText.replace(urlRegex, function(url) {
    return '<a href="' + url + '">' + url + '</a>';
});
return '<span>' + result + '</span>';

或者按parsing the string directly返回DOM节点(注意:jQuery 1.8或更高版本):

var result = urlText.replace(urlRegex, function(url) {
    return '<a href="' + url + '">' + url + '</a>';
});
return $.parseHTML(result);

您提到的错误is from Sizzle,选择器引擎通常位于jQuery(selector)之后。

它表明getLocationLink()的结果传递给jQuery()jQuery('test <a href>http://google.com</a> test'); // Syntax error, unrecognized expression: ... 而不是as a selector

<

将字符串以<span>开头,与jQuery()一样,将说服jQuery('<span>test <a href>http://google.com</a> test</span>'); // [ <span>...</span> ] jQuery(jQuery.parseHTML('test <a href>http://google.com</a> test')); // [ "test ", <a>...</a>, " test" ] 标记。并且,提供as html将避免条件解析。

{{1}}