2014-12-04 69 views
0

有什麼辦法可以訪問關閉內部的事件處理函數。 fiddle在html頁面使用事件在JavaScript中關閉函數?

(function(){ 
var val="balahhh" 
function a(){ 
    alert(val) 
} 
}) 
+0

不是我所知道的......這是關閉的力量。唯一的辦法是提供一個連接到Global範圍內的某個變量。 – rfornal 2014-12-04 16:11:06

+0

不可以。您想讓您的函數變量爲全局變量,或者使用[適當的事件附件](http://quirksmode.org/js/events_advanced.html) – Bergi 2014-12-04 16:11:44

回答

0

當然,你可以將其連接到window對象,但會污染全局範圍。但無論如何

(function() { 
    var val = "balahhh"; 
    window.a = function() { 
     alert(val) 
    } 
})(); // call it 

DEMO

0

嘗試在例如使用正確的事件:

(function() { 
    document.getElementById('your-id').addEventListener("click", a); 
    var val="balahhh"; 
    function a(event){ 
     alert(val) 
     event.preventDefault(); 
    } 
})(); 

而在你的HTML,只是分配一個ID,你的鏈接(或目標的所有鏈接元素,如您祝):

<a href="#" id="your-id"></a> 

JSFiddle

+0

爲什麼要阻止事件傳播?問題在於如何附加事件處理程序,但您也不必要地添加了OP未指定的功能。 – 2014-12-04 16:55:02

+0

好的,謝謝。這正是我通常如何處理應該只觸發一次的事件。 – nils 2014-12-04 17:19:10

+0

只要在這裏提及;您也可以將事件添加到父元素(例如body)中,並檢查事件源自哪個子元素/子子元素。這樣可以更輕鬆地實現複雜的功能,而不必擔心事件順序和傳播過多。 – 2014-12-04 19:46:05

相關問題