【发布时间】:2017-03-27 12:15:00
【问题描述】:
我正在尝试通过作为唯一文件名的属性值来选择具有 JQuery 过滤的对象。 I can't escape from slashes when the selector is made with a var.我在尝试多种组合时浪费了 2 个小时,但我认为我遗漏了一些东西。提前感谢您的光
我的 HTML:
<table class="table table-condensed" id="CLKPMTable_2"><tbody><tr class="click-row" valuetype="PM" filename="\\server\folder\file1" paymentmethodid="1"><td class="col-md-1"><img width="24" height="24" src="/Content/img/123.png" id="PMURLIMG_"></td><td class="col-md-10" id="PM_FILENAME_">BO OCT</td><td class="col-md-1 text-right"><img width="16" height="16" src="/Content/img/notyet.png" id="PM_STATUS_"></td></tr><tr class="click-row" valuetype="PM" filename="\\server\folder\file2" paymentmethodid="2"><td class="col-md-1"><img width="24" height="24" src="/Content/img/visa.png" id="PMURLIMG_"></td><td class="col-md-10" id="PM_FILENAME_">O SEP</td><td class="col-md-1 text-right"><img width="16" height="16" src="/Content/img/notyet.png" id="PM_STATUS_"></td></tr></tbody></table>
我的 Javascript:
var filename = "\\server\folder\file1";
var selec = $('tr[valueType="PM"][filename="'+filename+'"]');
alert(selec.attr("paymentmethodid"));
两者都不适用:
var filenamescaped = filename.replace('\\','\\\\')
var selec = $('tr[valueType="PM"][filename="'+filenamescaped+'"]');
也没有与(来自:Jquery official doc to escape chars used in css):
function jq( myid ) {
return myid.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
}
var filename = "\\server\folder\file1";
var filenamescaped = jq(filename);
我的提琴手做一些测试: jsfiddler
【问题讨论】:
-
不能使用替换双转义斜线
-
这是您要找的吗?
var filename = "\\\\server\\folder\\file1"; alert("Test: "+filename);这转义了反斜杠。 -
尝试使用
.replace("/","//")而不是.replace("//","////");第二个不会替换单斜杠。 -
所以
\fs 正在变成换页符;即使它们不是 f,反斜杠在替换发生之前仍然会“用完”,因为它们是在字符串声明中评估的,而不是在使用它的地方。至于解决方案,我还是不知道...... -
问题在于,当您有机会运行替换命令时,反斜杠已经消失了。
标签: javascript jquery html jquery-selectors escaping