如何使用jQuery选择变量中的元素?

时间:2010-09-01 23:30:46

标签: javascript jquery

我正在尝试为我在CMS中使用的TinyMCE制作一个简单的图像浏览器。作为其中的一部分,我需要检测用户是否选择了现有图像,因此我可以显示“编辑”表单而不是“选择图像表单”。

var selected_html = ed.selection.getContent();
var $elem = $(selected_html);
console.log($elem);

第一个函数将编辑器窗口中的用户选定文本作为HTML字符串返回。然后我想使用jQuery(虽然普通的javascript也可以),以便在随后抓取src和title属性进行编辑之前检查此字符串是否包含img标记。

现在我已经把html变成了一个对象。但在此之后我无法设法搜索img元素。读完这篇文章(How to manipulate HTML within a jQuery variable?后),我试过了:

$elem.find('img');

但它只是作为一个“未定义”的对象......

我想我错过了一些相当明显的东西(现在已经很晚了),但一小时后我仍然无法弄清楚如何从选择中获取img标签。 :(

非常感谢提前。

2 个答案:

答案 0 :(得分:27)

由于<img>位于jQuery对象的根目录,因此您需要使用.filter()而不是.find()

$elem.filter('img');

.filter()方法查看jQuery对象顶层的元素,而.find()查找任何顶级元素中的嵌套元素

如果您事先不确定目标元素的位置,可以将HTML放入包装<div>进行搜索。这样,给出的HTML永远不会出现在顶部。

var selected_html = ed.selection.getContent();
var $elem = $('<div>').html(selected_html);

var $img = $elem.find('img');

答案 1 :(得分:0)

尝试查看$elem变量中的内容。只需使用 Firefox Firebug进行console.log($elem)即可,您应该可以管理得很好! ;)