valor tiene seleccionar saber quitar obtener elementos elemento atributo agregar javascript jquery html jquery-selectors escaping

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