Jquery Select 带斜杠的属性
Jquery Select an attribute with slashs
我正在尝试 select 一个对象 JQuery 按作为唯一文件名的属性值进行过滤。当 selector 是用 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, "\" );
}
var filename = "\server\folder\file1";
var filenamescaped = jq(filename);
我的提琴手做一些测试:
jsfiddler
在这种情况下,值的反斜杠需要加倍才能用作有效的选择器
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>
已更新
在您的特定情况下,filename
值需要已经转义才能使替换生效,如 var filename="\\server\folder\file1"
请注意替换命令中的全局开关,以便替换所有出现的地方
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>
我正在尝试 select 一个对象 JQuery 按作为唯一文件名的属性值进行过滤。当 selector 是用 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, "\" );
}
var filename = "\server\folder\file1";
var filenamescaped = jq(filename);
我的提琴手做一些测试: jsfiddler
在这种情况下,值的反斜杠需要加倍才能用作有效的选择器
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>
已更新
在您的特定情况下,filename
值需要已经转义才能使替换生效,如 var filename="\\server\folder\file1"
请注意替换命令中的全局开关,以便替换所有出现的地方
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>