2013-06-13 101 views
0

如何將div的onClick href設置爲我的父錨href值?獲取從父錨鏈接到Div

<a href="getThisLink.html" target="_parent"> 
    <img src="images/1.jpg" /> 
    <span> 
    <div onclick="parent.location.href='**Link me with my anchor parent**' + 'params1';" > 
      <span>Words Words Words</span> 
    </div>    
</span> 
</a> 

我用這與我的幻燈片。

+0

所以還是讓我得到這個直,你預期的行爲是能夠點擊該'div'爲了檢索父a的href值? –

+0

將'div'等塊元素放在'a'中是不合法的。 –

+1

目前,只有圖像有鏈接。當我與我的跨度盤旋時,它不是可點擊的,所以我添加了div與onClick事件。雖然它正在工作,但我想清理我的html腳本,只是以編程方式添加這些鏈接,以減少添加鏈接的冗餘。 – lexeRoy

回答

2

下面的函數updateHref()需要一個div元素並查找它的父項的父標記。和(),如果它是一個錨(<a>)標籤:

  • 的onclick的div將採取的頁面<a>的HREF加urlParams
  • <a> href現在將採取其舊網址加urlParams

Demo link here。下面的代碼:

function updateHref(divElement, urlParams) { 
    var parentAnchor = divElement.parentNode.parentNode; 
    if (parentAnchor.nodeName != "A") return; 
    var url = parentAnchor.href + urlParams; 
    divElement.onclick = function() { 
     parent.location.href = url; 
    } 
    parentAnchor.href = url; // override parent anchor href URL 
} 

用法:

// for a specific div 
var myDiv = document.getElementById('myDiv'); 
updateHref(myDiv, "search?p=param1"); 

// for all divs of the page (whose parent's parent is an anchor tag) 
var divs = document.getElementsByTagName("div"); 
for(var i = 0; i < divs.length; i++){ 
    updateHref(divs[i], "search?p=param1");  
} 
+0

要添加到此答案,更好的替代方法是使用HTML5的詠歎調元素之一獲取您想要檢索的鏈接。因此,而不是使用錨標記,您可以簡單地將它替換爲一個div

+0

您將無法添加'params1',因爲父錨的導航被觸發並且'onclick'的執行是不保證完成。您將不得不取消事件冒泡,因此鏈接無法導航。 (類似jQuery的e.preventDefault()) –

+0

@RobertoHernandez看起來像一個公平點。我會添加一些東西來解決這個問題。 – acdcjunior

0

您的代碼是無效的,但是,這裏是工作的腳本:

<a href="getThisLink.html" target="_parent"> 
    <img src="images/1.jpg" /> 
    <span> 
     <div onclick="location.href = this.parentNode.parentNode.href + '#param1'; return false;"> 
      <span>Words Words Words</span> 
     </div> 
    </span> 
</a>