如何,使用 JQUERY .EACH() 但不用于元素,用于变量

Posted

技术标签:

【中文标题】如何,使用 JQUERY .EACH() 但不用于元素,用于变量【英文标题】:howto, Use JQUERY .EACH() but not for a element, for a Variable 【发布时间】:2011-01-27 02:27:50 【问题描述】:

javascript 中,我有一个变量设置为来自所见即所得编辑器的文本块。

我想使用 JQUERY 的 EACH() 来查找类 XXXX 的跨度。

$( "span.foods" ).each( function() );

但我希望它在我拥有的 variable=lookhere 中进行搜索,因为我无法直接访问 WYSIWYG 编辑器 (CKEDITOR) 中的文本。

如何做到这一点?

【问题讨论】:

你能更清楚你想要什么吗?您有一个要搜索的元素数组,或者您有一大块文本要在其中查找单词? @TM,我有一大块来自 WYSIWYG 编辑器 (html) 的文本设置为 varialbe=lookHere,我想遍历lookHere 以找到 class="foods" 好问题,非常有用。 是的,完全误解了这一点。您希望对找到的这些字符串做什么? 好吧,我已经编写了其余的程序,但基本上我将使用 SPANS、“id”和“text-in-between-the-span-tag”将它们转换为 JSON 字符串并发布到服务器以插入数据库。 【参考方案1】:

你想要 $.each(),它可以遍历任何东西,而不仅仅是一个 jQuery 对象。文档:http://api.jquery.com/jQuery.each/

好的,现在我明白了。您似乎想要的将需要与javascript string methods and properties 变得非常舒适,尤其是split() 和manipulating arrays。

【讨论】:

那会找到带有 class="foods" 的 SPANS 吗?我不知道怎么做? 我不这么认为,我认为他想针对变量中的字符串运行 CSS 选择器引擎(如果我正确读取 OP),然后能够迭代结果。【参考方案2】:
var html = "...";

假设text 包含来自您所见即所得编辑器的整个 html,这些将起作用。基本上这会解析 HTML,构造 DOM,以便我们可以在其上运行选择器。

var nodes = $(html);
$("span.foods", nodes).each(..);

或者等价

$("span.foods", $(html));

【讨论】:

+1,这比我建议的插入页面要好。 这不会泄露 DOM 元素吗?它们不会因为指向它们的集合而消失。 这只是一个sn-p。如果这是在全局范围内,那么是的 - var nodes = $(html); 将保留该对象,直到页面卸载或我们对其进行处理。在函数内部,只要没有创建循环引用,只要垃圾收集器在each() 处理完对象后运行,就会回收该对象。 没关系,我认为document 持有对createElemented 节点的引用。我错了。

以上是关于如何,使用 JQUERY .EACH() 但不用于元素,用于变量的主要内容,如果未能解决你的问题,请参考以下文章

jquery foreach和each的区别

jQuery parseXML, .each()

如何从 JQuery each() 中获取元素列表

jQuery中each的用法之退出循环和结束本次循环

jQuery 将 .each() 和 .on() 用于表中的复选框 [重复]

JQuery源码分析