当我们尝试在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之后执行。所以除了这里我没有任何选项来绑定这个锚链接。 有人可以为此提供解决方案。
答案 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}}