[英]Jquery Select an attribute with slashs
I'm trying to select an object with JQuery filtering by a value of an attribute that is a unique filename. 我正在尝试通过属性值选择JQuery过滤对象,该属性是唯一的文件名。 I can't escape from slashes when the selector is made with a var.
当使用var创建选择器时,我无法从斜杠中逃脱。 I lost 2 hours trying with multiple combinations but I think I'm missing something.
我尝试了多种组合我失去了2个小时,但我想我错过了一些东西。 Thanks in advance for the light
提前感谢光
My HTML: 我的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>
My Javascript: 我的Javascript:
var filename = "\\server\folder\file1";
var selec = $('tr[valueType="PM"][filename="'+filename+'"]');
alert(selec.attr("paymentmethodid"));
Didn't work neither with: 不适用于:
var filenamescaped = filename.replace('\\','\\\\')
var selec = $('tr[valueType="PM"][filename="'+filenamescaped+'"]');
Also didn't work neither with (from: Jquery official doc to escape chars used in css ): 也没有用(来自: Jquery官方doc来逃避css中使用的字符 ):
function jq( myid ) {
return myid.replace( /(:|\.|\[|\]|,|=)/g, "\\$1" );
}
var filename = "\\server\folder\file1";
var filenamescaped = jq(filename);
My fiddler to make some test: jsfiddler 我的小提琴手做了一些测试: jsfiddler
The value's backslash needs, in this case, to be doubled twice for it to work as a valid selector 在这种情况下,值的反斜杠需要加倍两倍才能使其成为有效的选择器
var filename = "\\\\\\\\\\\\\\\\server\\\\\\\\folder\\\\\\\\file1"; var selec = document.querySelector('tr[valueType="PM"][filename="'+filename+'"]'); alert(selec.getAttribute("paymentmethodid"));
<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>
Updated 更新
In your particular case the filename
value need to be already escaped for the replace to work, as in var filename="\\\\\\\\server\\\\folder\\\\file1"
在您的特定情况下,需要转义
filename
值才能使替换工作,如var filename="\\\\\\\\server\\\\folder\\\\file1"
Do note the global switch in the replace command so it replace all occurrences 请注意replace命令中的全局开关,以便替换所有出现的内容
var filename = "\\\\\\\\server\\\\folder\\\\file1"; var filenamescaped = filename.replace(/\\\\/g,'\\\\\\\\\\\\\\\\'); var selec = $('tr[valueType="PM"][filename="'+filenamescaped+'"]'); alert(selec.attr("paymentmethodid"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.