2012-02-07 68 views
-5

我有一個元素,並在JavaScript中的功能我希望它「自動點擊」,它的工作原理。但問題是元素有href =「#something」,它不會改變url。 它應該將散列從http://url.com更改爲http://url.com/#somethingclick()不適用<a>元素

什麼是錯?

的代碼非常簡單是這樣的:

<ul id="menu"> 
<li><a href="#something" class="selected">click here</a></li> 
<li><a href="#something2">or click here</a></li> 
</ul> 

//javascript 
document.ready(function(){ 
$('#menu a').each(function(i){ 
    if($(this).attr('class') == 'selected'){ 
    $(this).click(); 
    $(this).css('color', 'yellow'); 
    } 
}); 
}); 

的點擊()的作品,因爲顏色的變化,但散列的網址保持不變。

謝謝大家。

+4

代碼在哪裏? – Unknown 2012-02-07 12:36:21

+4

請發佈您的代碼 – Hadas 2012-02-07 12:37:08

+0

如果我們無法看到代碼,則無法提供幫助 – thenetimp 2012-02-07 12:37:51

回答

0

,如果它看起來像這樣:

<a href='#target'>Click me</a> 

它應該工作。

自動化:

var target = getElementById('linkid').href; 
location.replace('url.html#' + target); 
+0

如果有人點擊它,這將工作。 OP說** auto ** - 點擊,例如,以某種方式模擬事件。 – 2012-02-07 12:41:13

+0

正確 - 我也注意到了javascript標籤,所以我添加了javascript解決方案。 – CompanyDroneFromSector7G 2012-02-07 12:50:34

+0

好吧,但事情是:如果我用鼠標點擊它改變哈希,所以爲什麼它不會改變,如果我點擊的JavaScript? – 2012-02-07 13:05:47

0

如果你想改變位置和哈希,你也可以手動做到這一點,例如

document.location = $('#my-link').attr('href'); 
+1

除了jQuery是沒有提及...... – CompanyDroneFromSector7G 2012-02-07 12:42:45

+0

他顯然是在他的代碼示例使用jQuery,所以我不明白爲什麼他不想用它來解決這個問題。 – RobinUS2 2012-02-07 12:57:04

+0

好的 - 除了你的答案後添加jQuery代碼 – CompanyDroneFromSector7G 2012-02-07 13:04:15

1

您可以添加window.location.hash = 'something2'的代碼。它只會改變散列值(#something2)

編輯

<ul id="menu"> 
<li><a href="#something" rel="something" class="selected">click here</a></li> 
<li><a href="#something2" rel="#something2">or click here</a></li> 
</ul> 


document.ready(function(){ 
$('#menu a').click(function(){ 
    if($(this).attr('class') != 'selected'){ 
    window.location.hash=$(this).attr('rel'); 
    $(this).css('color', 'yellow'); 
    } 
}); 
}); 
+0

好的,但事情是:如果我用鼠標點擊它改變散列,那麼爲什麼它不會改變,如果我點擊的JavaScript? – 2012-02-07 13:01:00

+0

您不需要執行'$(this).click();'。只是'window.location.hash替換='something2'' – 2012-02-07 13:11:20

+0

參見後期編輯上述 – 2012-02-07 13:14:45

0

我不是在這一個巨大清楚,但它的

$(this).trigger('click'); 

觸發事件,即強迫鏈接導航。

$(this).click(); 

只會將JavaScript事件引發到DOM中。目前這段代碼不會因爲這個原因「自動點擊」

這是需要什麼?