2013-04-16 35 views
1

我使用舊版本的Firefox(由於各種原因,我無法更新它)。我不能使用jQuery事件處理程序(它們似乎會在舊瀏覽器上泄漏內存)。在html中調用JQuery自定義函數?

所以我不得不使用下面的代碼:

<div class="somediv" onclick="dostuff()"></div> 

問題是,代碼不需額外的工作。爲什麼?

我的Javascript代碼:

$(document).ready(function() 
{ 
    function dostuff() 
    { 
     $('#someotherdiv').html('hello'); 
    } 
}); 
+0

@尼古拉斯巴特勒 - 嘿尼古拉斯我很感謝你們拼寫正確的我。但爲什麼要刪除我的「提前致謝」?有禮貌有什麼不對嗎? :-) – Juw

+0

我喜歡禮貌!但是在問題中加入TIA和類似的東西卻違反了網站禮儀,因爲它只是增加了混亂:http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts –

回答

4

您所放置ready事件中的作用處理程序,所以它在本地範圍內。把函數的根級別,以便它在全球上市:

function dostuff() { 
    $('#someotherdiv').html('hello'); 
} 

$(document).ready(function() { 
    // whatever you need to do when the page has loaded 
}); 
+0

是的,你可以看到: http://jsfiddle.net/WHj2u/ –

+0

是的,然後該功能可以在DOM準備好之前觸發。它做更多的東西,然後'你好'的消息。 – Juw

+2

@Juw:當你聲明全局函數時,它從一開始就存在(在它聲明的腳本標記的下面)。如果函數對可能還不存在的元素做了某些操作(即元素比調用該函數的元素晚),則必須在函數內部處理該元素。 – Guffa

0

只是把功能外$(document).ready(,就像下面有沒有必要把功能$(document).ready(

function dostuff() 
    { 
     $('#someotherdiv').html('hello'); 
    } 
0
$(document).ready(function() { 

}); 

你的函數放在這裏

function dostuff() 
    { 
     $('#someotherdiv').html('hello'); 
    } 
0

另一種方法:使用jQuerys事件系統分配一個單擊處理

$(document).ready(function() { 
    $('.somediv').click(function() { 
     $('#someotherdiv').html('hello'); 
    } 
}); 
+0

正如我在我原來的帖子中所說的。我不能使用JQuery事件,因爲它似乎在舊瀏覽器中泄漏內存 – Juw