2012-03-27 80 views
2

我很好奇最好的方法是用HTML中的href鏈接調用JS函數。我不使用庫,我看到很多關於jQuery使用事件處理程序...從HRE調用JS函數

但是,如果即時通訊不使用庫,它仍然可以完成,或者我將不得不使用點擊類型調用?

+0

只是跳上jQuery的潮流,你會感謝我的餘生。我最初的啓發是SO hazing :-D – 2012-03-27 03:21:46

+0

這就是懶惰的人的談話:P – Sir 2012-03-27 03:28:23

+1

我是那些喜歡自己做所有事情的人之一,但老實說,一旦你嘗試jQuery,你永遠不會回頭。實際上有十億種情況,jQuery有一個函數可以封裝自己需要編寫的3000行代碼。做到這一點..... – 2012-03-27 03:38:32

回答

4

你可以用普通的javascript來使用事件處理程序。沒有框架是必需的。這裏是一個跨瀏覽器的功能,我使用:

// add event cross browser 
function addEvent(elem, event, fn) { 
    if (elem.addEventListener) { 
     elem.addEventListener(event, fn, false); 
    } else { 
     elem.attachEvent("on" + event, function() { 
      // set the this pointer same as addEventListener when fn is called 
      return(fn.call(elem, window.event)); 
     }); 
    } 
} 

,並使用它的一個例子是這樣的:

HTML:

<a id="myLink" href="#">Click ME</a> 

的Javascript:

var link = document.getElementById("myLink"). 
addEvent(link, "click", function(e) { 
    // process the click on the link here 
}); 

如果您不希望鏈接的默認點擊發生,那麼您需要防止事件發生時的默認行爲像這樣:

var link = document.getElementById("myLink"). 
addEvent(link, "click", function(e) { 
    // process the click on the link here 

    // prevent default action of the click 
    if (e.preventDefault) { 
     e.preventDefault();  // normal browsers 
    } else { 
     e.returnValue = false; // older versions of IE (yuck) 
    } 
}); 
+0

我會嘗試一下,看看我能否得到它的工作!你如何構建這樣一個函數的href? – Sir 2012-03-27 03:28:54

+0

那麼我做Click ME? – Sir 2012-03-27 03:35:37

+0

@Dave - 我在答案中增加了更多示例。 – jfriend00 2012-03-27 03:38:05

2

試試這個

function test() { alert (''); } <a href="#" onclick="test();" />

2

基本上有兩種方式:

<a href="javascript:someFunction(...)">...</a> 

<a href="#" onclick="return someFunction(...)">...</a> 

(在這種情況下someFunction必須返回false)

我更喜歡後者。

+0

爲什麼有些人會選擇一種比另一種更重要? – Sir 2012-03-27 03:25:56

+0

在後一種情況下,瀏覽器在懸停鼠標懸停(這是醜陋的,IMO)的底部狀態欄中不顯示「javascript:function」。 – 2012-03-27 03:31:57