2013-10-29 60 views
1

我試圖拉從一個類中的鏈接標題屬性,有一點麻煩:如何從鏈接獲得標題屬性的類中使用JavaScript

<div class="menu"> 
<a href="#" title="4242" onclick="cselect()">United States</a> 
<a href="#" title="4243" onclick="cselect()">Canada</a> 
</div> 

這裏就是我的嘗試:

function cselect(){ 
    var countryID = $(this).attr("title"); 
    location.href = location.href.split("#")[0] + "#" +countryID; 
    location.reload(); 
} 

謝謝!

+2

在一個側面說明,從來沒有的onclick或其他JavaScript使用HTML層內,不要在業務邏輯混合。改爲創建一個JavaScript事件處理程序! –

回答

2

您必須引用點擊的元素。正如tymeJV所建議的,一種方法是通過this

但我會從一個單獨的腳本塊設置事件處理程序,並引用當前元素。對於以下兩種解決方案,都不需要額外的內聯onclick屬性。

/* using jQuery */ 
jQuery('.menu a').on('click', function(event) { 
    event.preventDefault(); 

    var countryID = jQuery(this).attr('title'); // <-- !!! 

    location.href = location.href.split('#')[0] + '#' + countryID; 
    location.reload(); 

}); 

/* using plain JS */ 
var countryAnchors = document.querySelectorAll('.menu a'); 
for(var anchor in countryAnchors) { 
    anchor.addEventListener('click', function(event) { 
     event.preventDefault(); 

     var countryID = this.getAttribute('title'); // <-- !!! 

     location.href = location.href.split('#')[0] + '#' + countryID; 
     location.reload(); 

    }, false); 
} 
/* todo: cross-browser test for compatibility on querySelectorAll() and addEventListener() */ 
+0

謝謝,將採用這種方法。 – APAD1

3

通行證在this您在線處理程序:

function cselect(obj){ 
    var countryID = $(obj).attr("title"); 
    console.log(countryID); 
} 

<a href="#" title="4242" onclick="cselect(this)">United States</a> 
<a href="#" title="4243" onclick="cselect(this)">Canada</a> 

演示:http://jsfiddle.net/yDW3T/

+0

@BharathRallapalli - OP在他的演示中使用它。 – tymeJV

+0

感謝您的迴應,這很好! – APAD1

0

它只是簡單的是這樣的:

function cselect(){ 
    var countryID = $(this).attr("title"); 
    window.location.hash = countryID 
    location.reload(); 
} 
相關問題