2012-04-23 235 views
-4

任何知道的方式来使javascript/jquery只适用于div或iframe中的所有内容?使JavaScript只适用于div

举一个例子: 我有一个很酷的javascript函数,使得我的文本改变了颜色,但是当我只希望它改变div或iframe中的文本时,它改变了整个文本页面的颜色。

任何想法?

下面是一些代码:

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

编辑:这似乎是更多的麻烦比它的价值,感谢您的帮助。

+10

代码是胜过千言万语。 – 2012-04-23 11:26:33

+1

在编写您的javascript/jQuery代码时,您可以指示它如何操作以及影响页面的哪些部分。我们需要查看代码才能评论哪些特定部件需要更改。很多jQuery代码片段都很简单,就像'$('everything')。myPlugin();'你只需要改变''('subset-of-everything')。myPlugin();'。 – 2012-04-23 11:28:00

+0

@McDan Garrett:感谢代码。看到我更新的答案。 – RichieHindle 2012-04-23 11:38:12

回答

1

您的函数在某些时候可能引用了document.body以使节点发生更改。请给它别的东西,而不是document.body。在大多数元素的情况下,只传递元素就没有问题。然而,在iframe的情况下,页面内必须来自相同的来源(方案,主机,端口),并且您需要传递帧的contentDocument(以及可选的特定元素)。

+0

对不起,我对javascript一点都不好,我怎么能把'document.body'变成它需要被应用到ID为“Foo”的div? – 2012-04-23 11:30:50

+0

嗯......编辑源代码? – 2012-04-23 11:33:31

+0

我的意思是,什么'document.body'需要替换? – 2012-04-23 11:34:41

1

大多数jQuery调用使用所谓的“选择器”来选择要处理的元素。您的代码大概如下所示:

$('body').do_cool_stuff(); 

选择整个身体。 'body'是选择那里,你可以把它改成:

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

选择只有一个DIV:

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

在选择的#divid属性相对应。

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

+0

这似乎阻止它完全工作 – 2012-04-23 11:41:32

+0

@McDanGarrett:那么你需要给我们更多的信息,例如。 'foo()'函数实际上看起来像什么。 (它真的叫做'foo()'还是我们可以去看看的jQuery插件?)理想的做法是在jsfiddle上发布一个失败的示例。 – RichieHindle 2012-04-23 11:44:41

+0

该函数(在foo.js中找到)只是我下载并将该代码添加到我的网站,似乎比它的价值更麻烦,感谢您的帮助。 – 2012-04-23 11:47:05

4

代码之后更新的答案被张贴:

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

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


原来的答复

您已经标记问题jquery,所以:你可以避开任何元素一个jQuery包装或设置你的页面上的元素,而您可以编写一个CSS3 selector(中和few more)和jQuery功能,其通常也可以通过其别名$获得。如果你有一堆span里面装的

var foo = $("#foo"); 

因此,举例来说,如果你有一个id"foo"一个div,这将使用CSS选择器#foo获取该div一个jQuery实例一个div,你可以得到他们使用通常的后代选择器语法:

var spans = $("div span");