2015-09-16 62 views
0

我有兩個元素,我想單擊一個來觸發其他鏈接。點擊一個元素來觸發他人的鏈接

我試過兩種方法。點擊功能的作用就像按鈕1在點擊時變成紅色,但它不會觸發鏈接。任何想法我從下面錯過了什麼?

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 

    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<a class="link" href="http://google.com">Button 1</a> 
<div class="clickThis">i want to click this one</div> 


<script> 

var clickThis = document.getElementsByClassName('clickThis'); 
var link = document.getElementsByClassName('link'); 


$(clickThis).click(function(){ 
    $(link).css({"color": "red"}); 
    $(link).trigger('click'); 
}); 

$(document).on('click', clickThis, function(event) { 
event.preventDefault(); 
    $(link).css({"color": "red"}); 
    $(link).click(); 
}); 

</script> 

</body> 
</html> 

回答

0

你的JS應該是這樣的:

var clickThis = '.clickThis'; 
var link = '.link'; 

$(clickThis).click(function(){ 
    $(link).css({"color": "red"}); 
    $(link)[0].click(); 
}); 

記住,當你選擇課程,他們返回多個元素,所以jQuery將不知道要點擊哪一個元素,你的情況,你只有一個元素與該類,但你仍然需要說哪一個,與[0]

工作的jsfiddle樣本:

http://jsfiddle.net/qf0ta0cx/1/

我在a標籤添加target="_blank"只是爲了測試它無需刷新頁面每次我點擊它,但在新標籤中打開鏈接,就可以根據其刪除根據您的喜好。

0

好的,你太過複雜了。

我不認爲你需要jQuery來實現這一點。

這是我能讀你的代碼後的圖:

getElementsByClassName靶向元素你得到一個數組,所以得到第一個索引來得到你所需要的:

var clickThis = document.getElementsByClassName('clickThis')[0]; 
var link = document.getElementsByClassName('link')[0]; 

你可以聽點擊一個元素與onclick並引發點擊與.click(),容易:

clickThis.onclick = function() { 
    link.click(); 
}; 
link.onclick = function() { 
    link.style.color = 'red'; 
} 

...這是所有你需要讓它起作用。

有時候,香草JavaScript是更好:d

看這個的jsfiddle:https://jsfiddle.net/27of62dc/1/

+0

感謝您的幫助Yoann。 –

0

當點擊與clickThis類的元素,它會觸發該鏈接類元素的點擊。如果您有多個鏈接類的元素,您可能需要使用元素ID。

$('.clickThis').on('click',function() { 
    console.log('div'); 
    $('.link').css({"color": "red"}); 
    $('.link').click(); 
}); 

$('.link').click(function() { 
    console.log('clicked!'); 
    window.location = $(this).prop('href'); 
}); 
+0

你仍然沒有解決這個問題,你需要指出哪個元素點擊,'$('。link')[0] .click()'或者使用一個ID。 –

相關問題