Ele sarà una parte del DOM solo se è aggiunta solo nel documento.
L'esempio è solo una stringa, è necessario inserire tale stringa in documento per essere un DOM valido.
Si può fare in questo modo:
var myhtml='<tr><td>1</td><td>Orange</td><td>1799.00 x <span>1</span></td><td>0.00</td><td>1799.00</td></tr><tr class="shippingRow"><td></td><td></td><td></td><td>Shipping</td><td>2.00</td></tr><tr class="totalRow"><td></td><td></td><td></td><td><strong>Total</strong></td><td><strong>1811.00</strong></td></tr>';
var fragment = document.createDocumentFragment();
var span= document.createElement("span");
$(span).append(myhtml);
fragment.appendChild(span);
console.log($(span).find('.shippingRow td').length);
ho usato frammento di documento in modo che il codice HTML non sarà una parte dell'albero DOM, ma può ancora essere accessibili tramite JavaScript. Leggi qui: https://developer.mozilla.org/en-US/docs/Web/API/Document/createDocumentFragment
I DocumentFragments sono nodi DOM. Non fanno mai parte dell'albero principale DOM . Il solito caso d'uso è creare il frammento del documento, aggiungere gli elementi al frammento del documento e quindi aggiungere il frammento del documento all'albero DOM. Nell'albero DOM, il frammento del documento è sostituito da tutti i suoi figli.
FIDDLE: filtro http://jsfiddle.net/0oxdqdot/
è più lento di trovare giusto? forse dovrei avvolgere i tag correttamente. –
@AliceXu Direi che in questo scenario la differenza di prestazioni è probabilmente trascurabile. In genere, è difficile valutare le prestazioni poiché i diversi browser funzionano in modo diverso. Le operazioni vengono chiamate solo su un piccolo insieme di elementi. È possibile che la creazione dell'elemento per avvolgerlo correttamente possa persino compensare qualsiasi potenziale guadagno in termini di prestazioni. – Stryner
Ho appena scoperto che non posso manipolarlo. '$ (myhtml) .filter (". shippingRow "). find (" td "). attr ('style', 'padding: 10px');' <- non funziona. –