简体   繁体   English

Jquery选择带斜杠的属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM