2016-11-13 21 views
5

我想選擇一個JQuery篩選對象,該屬性值是唯一文件名。當選擇器使用var時,我無法從斜線中逃脫。我失去了2個小時嘗試多種組合,但我想我錯過了一些東西。在此先感謝光Jquery使用斜槓選擇一個屬性

我的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

+0

無法使用替換雙轉義斜槓 –

+1

這是你在找什麼? 'var filename =「\\\\ server \\ folder \\ file1」;警報(「測試:」+文件名);'這逃避了反斜槓。 – Feathercrown

+0

嗨@Feathercrown,謝謝。試過替換,並沒有工作。 檢查我的更新。 –

回答

3

值的反斜槓需要,在這種情況下,要翻倍兩次爲它作爲一個有效的選擇

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>

+1

向下選民 - 關心評論這項工作? – LGSon

+1

將無法​​正常工作,他不能直接更改該變量,只有替換命令,此時反斜槓已經消失。儘管我認爲在代碼的這一點上這甚至不可解決;它必須提前「固定」,所以它不是你的錯。 – Feathercrown

+0

謝謝。我從這裏得到這個解決方案:https://bugs.jquery.com/ticket/14417其實我試圖把我的頭插入到「替換」,因爲@ Feathercrown說我不能硬編碼邏輯和替換似乎不起作用(\ \ \ \ \ \\\\\) –