javascript - seleccionar - saber si un elemento tiene un atributo jquery
Jquery Seleccione un atributo con barras (1)
La barra diagonal inversa del valor necesita, en este caso, que se duplique dos veces para que funcione como un selector válido
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>
Actualizado
En su caso particular, el valor del filename
debe estar ya escapado para que funcione el reemplazo, como en var filename="////server//folder//file1"
Observe el interruptor global en el comando replace para reemplazar todas las ocurrencias
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>
Intento seleccionar un objeto con el filtrado JQuery por un valor de un atributo que es un nombre de archivo único. No puedo escapar de las barras cuando el selector está hecho con una var. Perdí 2 horas intentando con combinaciones múltiples, pero creo que me estoy perdiendo algo. Gracias de antemano por la luz
Mi 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>
Mi Javascript
var filename = "//server/folder/file1";
var selec = $(''tr[valueType="PM"][filename="''+filename+''"]'');
alert(selec.attr("paymentmethodid"));
No funcionó ni con:
var filenamescaped = filename.replace(''//',''////')
var selec = $(''tr[valueType="PM"][filename="''+filenamescaped+''"]'');
Tampoco funcionó ni con (desde: documento oficial de Jquery hasta los caracteres de escape utilizados en css ):
function jq( myid ) {
return myid.replace( /(:|/.|/[|/]|,|=)/g, "//$1" );
}
var filename = "//server/folder/file1";
var filenamescaped = jq(filename);
Mi violinista para hacer una prueba: jsfiddler