2012-04-23 234 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");