2014-05-13 1 views
0

J'ai un Pictureeditor et un éditeur HTML. Quand je change la valeur de la sous-ligne dans le piceditor, il faut mettre à jour l'attribut alt dans l'éditeur html.Comment utiliser le filtre sur une chaîne entière?

J'utilise:

function refreshEditorAlt(pic,newalt){ 
    cnt=getEditorContent(); 
    var newcnt = cnt.replace($(cnt).filter("img[src$='"+pic+"']").attr('alt'), newalt); 
    setEditorContent(newcnt); 
} 

Il fonctionne jusqu'à ce que les balises img dans la source (variable cnt) de l'éditeur HTML ne sont pas entouré par exemple balises div.

//works 
<img alt="pic1" src="http://tools.huber-verlag.de/data/18139/1.jpg" /> 
//does not work 
<div><img alt="pic1" src="http://tools.huber-verlag.de/data/18139/1.jpg" /></div> 

J'étais shure $ (cnt) .filter regarde dans le cnt entier.

Donc, la question est de savoir comment filtrer un attribut d'un tag qui est quelque part dans une chaîne mais pas dans la racine, quand on le voit comme DOM?

Répondre

1

.filterfiltres les éléments réels, qui sont encapsulés (sélectionnés) dans l'objet jQuery. Pour aller en profondeur dans l'arbre DOM, vous devez utiliser .find:

$(cnt).find("img[src$='"+pic+"']"). ... 

ou moins:

$("img[src$='"+pic+"']", cnt). ... 
+0

D'abord, je aussi essayé trouver mais ça n'a pas marché. Peut-être que si vous pouvez me dire comment utiliser find pour obtenir l'attribut alt du troisième img dans la chaîne cnt, en donnant l'attribut src. – user3628218

Questions connexes