我有一个图片编辑器和一个 HTML 编辑器。当我更改 piceditor 中子行的值时,它应该更新 html 编辑器中的 alt 属性。
我使用:
function refreshEditorAlt(pic,newalt){
cnt=getEditorContent();
var newcnt = cnt.replace($(cnt).filter("img[src$='"+pic+"']").attr('alt'), newalt);
setEditorContent(newcnt);
}
它会一直工作,直到 HTML 编辑器的源(cnt 变量)中的 img 标签没有被例如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>
我确信 $(cnt).filter 会查看整个 cnt。
所以问题是,当被视为 DOM 时,如何过滤位于字符串中但不在根中的标签的属性?
最佳答案
.filter
过滤实际元素,这些元素被包装(选择)在 jQuery 对象中。要深入 DOM 树,您需要使用 .find
:
$(cnt).find("img[src$='"+pic+"']"). ...
或更短:
$("img[src$='"+pic+"']", cnt). ...
关于javascript - 如何对整个字符串使用过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628566/