【问题标题】:Make javascript only apply to a div使javascript仅适用于div
【发布时间】:2012-05-04 00:11:42
【问题描述】:

是否知道让 javascript/jquery 仅适用于 div 或 iframe 内的所有内容的方法?

例如: 我有一个很酷的 javascript 函数,它可以让我的文本改变颜色,但是当我只希望它改变 div 或 iframe 中的文本时,它会改变整个文本页面的颜色。

有什么想法吗?

这里有一些代码:

<script type="text/javascript">
    $(document).ready(function() { //  When the document is ready
    $.foo({
            fontchange: true,             //  Make the text pretty
        });
    });
</script>

编辑:这似乎比它的价值更麻烦,谢谢你的帮助。

【问题讨论】:

  • 代码值一千字。
  • 在编写您的 javascript/jQuery 代码时,您会指示它如何操作以及影响页面的哪些部分。我们需要查看代码才能评论要更改的特定部分。很多 jQuery sn-ps 就像 $('everything').myPlugin(); 一样简单,您只需将其更改为 $('subset-of-everything').myPlugin();
  • @McDan Garrett:感谢您的代码。请参阅我的更新答案。

标签: javascript jquery iframe html


【解决方案1】:

您的函数可能在某些时候引用document.body 以使节点发生变化。而不是document.body,给它别的东西。在大多数元素的情况下,只需传递元素就可以了。但是,在 iframe 的情况下,内部页面必须来自同一来源(方案、主机、端口),并且您需要传递框架的 contentDocument(以及可选的特定元素)。

【讨论】:

  • 对不起,我对 javascript 一点也不擅长,我怎么能把 document.body 变成应用到 id 为“Foo”的 div 所需的东西?
  • 我的意思是,document.body 需要替换成什么?
【解决方案2】:

大多数 jQuery 调用使用所谓的“选择器”来选择要处理的元素。您的代码可能类似于:

$('body').do_cool_stuff();

选择整个身体。 'body' 是那里的选择器,您可以将其更改为:

$('#somediv').do_cool_stuff();

只选择一个 div:

<div id='somediv'>...</div>

选择器中的#对应divid属性。

编辑,现在我们有了一些代码:尝试将 $.foo(...) 更改为 $('#somediv').foo(...)

【讨论】:

  • @McDanGarrett:那么您需要向我们提供更多信息,例如。 foo() 函数实际上是什么样子的。 (它真的叫foo() 还是我们可以去看看的jQuery 插件?)理想的做法是在jsfiddle 上发布一个失败的示例。
  • 该函数(在 foo.js 中找到)只是我下载的并将该代码添加到我的站点的东西,看起来麻烦多于其价值,感谢您的帮助。
【解决方案3】:

更新答案在代码发布后:

您发布的代码$.foo({fontchange: true}) 表明您正在使用一个有点不寻常的jQuery 插件,因为它不适用于一组选定的元素。插件通常不是这样工作的,所以我们不知道你在处理什么插件(大概它的文档讨论了如何使它更有针对性)。

jQuery 插件的通常用法是,首先你得到一组要操作的元素,通常的选择器(见下文),然后你在它们上调用插件函数.例如,$("some selector here").foo({fontchange: true});。但这并不是这个特殊的、不寻常的插件的工作方式。


原答案

您已标记您的问题jquery,因此:您可以在页面上的任何元素或元素集周围获得一个 jQuery 包装器,您可以为其编写 CSS3 selector(和 few more)和 @ 987654323@函数,通常也可以通过别名$获得。

例如,如果您有一个div 和一个id"foo",这将使用CSS 选择器#foo 为该div 获得一个jQuery 实例:

var foo = $("#foo");

如果您在 div 中有一堆 spans,您可以使用通常的后代选择器语法来获取它们:

var spans = $("div span");

【讨论】:

    猜你喜欢
    • 2015-10-10
    • 2012-10-30
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2021-04-18
    • 1970-01-01
    • 2018-10-15
    相关资源
    最近更新 更多