Mi piacerebbe poter creare un oggetto jQuery da una stringa di HTML e cercare direttamente all'interno.Trova un elemento in un oggetto jQuery creato da una stringa di HTML
Esempio:
htmlString = '<h3>Foo</h3><div class="groups"></div>'
$html = $(htmlString)
$groups = $html.find('.groups') // Returns []. WTF?
Mi aspetterei che find
trova in realtà l'elemento div
.
Se vuoi sapere di più sul contesto della mia domanda, ho sviluppato un'applicazione Backbone e di rendere certe opinioni che ho cose del genere:
render: ->
$html = $(@template(vehicle: @vehicle))
$groups = $()
_(@groups).each (group)=>
subview = new App.Views.AttributesGroup(group: group, vehicle: @vehicle)
$groups = $groups.add(subview.render().el)
$(@el).html($html)
$(@el).find('.groups').replaceWith($groups)
@
Sto cercando un modo più elegante per raggiungere lo stesso risultato.
Grazie!
Grazie Matt, è molto chiaro. Mi sento stupido per non aver pensato a questa sottigliezza nei confronti dei discendenti e dei fratelli.
Così ho refactoring il mio codice:
render: ->
$html = $(@template(vehicle: @vehicle))
$groups = $html.filter('.groups')
_(@groups).each (group)=>
subview = new App.Views.AttributesGroup(group: group, vehicle: @vehicle)
$groups.append(subview.render().el)
$(@el).html($html)
@
ora c'è solo un inserimento DOM e il codice è più chiaro per me.
Grazie Matt, è molto chiaro. Mi sento stupido per non aver pensato a questa sottigliezza nei confronti dei discendenti e dei fratelli. Ecco come ho refactored il codice: https://gist.github.com/2585965. –