2013-10-07 63 views
4

嗨StackOverflow社區。我有一個關於在HTML定位標記的href中添加JavaScript的替代方法的問題。我已經知道這是不良的做法,取而代之的這樣做:在錨定標記中添加JavaScript的替代方法

<div id="some_div"><a href="JavaScript:myfunction();">Text</a></div> 

我可以做到這一點: 文本

$('#some_div').on("click","a",function(e){ 
    myFunction(); 
}); 

我的問題是,如何做到這一點的工作,如果你有變量傳遞到功能?例如:

<div id="some_div"><a href="JavaScript:myfunction('param1','param2')">Text</a></div> 

現在請記住,參數1和參數2中的數據將是不同的字符串。你如何處理這種情況?事件偵聽器需要接收由錨標籤輸入的不同數據。那麼用戶如何在使用時添加param1和param2數據:

<div id="some_div"><a href="#">Text</a></div> 

在此先感謝您。

+1

取決於參數將來自何處。你有他們在哪裏?最後,您將調用'myFunction(p1,p2);' – bfavaretto

+0

參數將由數據輸入人員輸入。我希望他們把它們輸入錨點。不幸的是,這必須向後兼容IE7,8和9。我知道HTML5不適用於IE7。 – seroth

+1

HTML5可能無法與IE7一起使用,但數據屬性的確如此,因爲它們只是屬性。 –

回答

7

有很多方法可以做到這一點。一個想到的將是在錨點上使用data-*屬性:

<a href="#" data-param1="param1" data-param2="param2">Text</a> 

var $this = $(this); 
myFunction($this.data("param1"), $this.data("param2")); 
+0

這不是HTML5參數嗎?這必須與不處理HTML5的IE7一起使用。對不起,我應該在上面說過。 – seroth

+1

@seroth它仍然可以在IE7中工作。它僅在HTML5中有效,但這並不意味着IE7不能使用該屬性。 –

+3

它是html5,但它適用於所有瀏覽器和瀏覽器版本。這只是一個屬性。 –