Očakával, že nasledujúce jQuery vytvorí uzly z html:
var nodes = $( "<li>ABC</li><li>DEF</li>" );
Teraz zvážte nasledujúci html:
<ul class="foo">
<li>ABC</li>
<li>DEF</li>
</ul>
Moja otázka, prečo nasledujúci postup vracia namiesto uzlov chybovú správu?
var html = $( "ul.foo" ).html();
var nodes = $( html );
Chybové hlásenie je:
Uncaught Error: Syntax error, unrecognized expression: <li>ABC</li>
<li>DEF</li>
Môžete ju vidieť v akcii tu http://jsfiddle.net/HDk47/
odpovede:
4 pre odpoveď č. 1Analýza juristiky jQuery nepáči vedúcu medzeru v systéme Windows html
.
Odstránenie medzier odstráni problém:
var html = $.trim( $( "ul.foo" ).html() );
Aktualizácia: Felix Kling vykopali na odkaz na dokumentáciu predtým, ako som bol schopný.
0 pre odpoveď č. 2
S odkazom na http://jquery.com/upgrade-guide/1.9/#jquery-htmlstring-versus-jquery-selectorstring„Od 1.9 sa reťazec považuje za HTML, iba ak začína znakom menším ako („ <“).“
var html = $( "ul.foo" ).html();
html = html.replace(/^[ rnt]+/g,"");//remove leading whitespace
var nodes = $(html);
-3 pre odpoveď č. 3
Chyba je tu:
var html = $( "ul.foo" ).html();
var nodes = $( html );
Radšej to urobte takto:
var html = $( "ul.foo" ).html();
var nodes = $( html );
Otestoval som to a funguje to