2013-07-30 123 views
1

我正在嘗試更改頂部(錨點鏈接id)的單擊事件時的id元素。 例如:jQuery通過點擊錨點鏈接來更改id元素

<div id="top-nav-list"> 

將是chnage到:

<div id="new-top-nav-list"> 

這是這個div中:<div id="top-menu">...</div>

我的jsfiddle:fiddle

任何意見或建議?謝謝。


我的代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Menu</title> 
<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script> 
<style type="text/css"> 
ul{ 
    list-style:none; 
} 
#top-menu{ 
    background:#CCCCCC; 
    width:120px; 
    padding:2px; 
    float:left; 
    margin-right:5px; 
} 
#left-menu{ 
    background:#CCCCCC; 
    width:120px; 
    padding:2px; 
    float:left; 
} 
</style> 
</head> 

<body> 
<script type='text/javascript'> 
jQuery.noConflict(); 
    jQuery(window).load(function(){ 
     jQuery('#top').click('mouseover',function(e){ 
       jQuery('top-nav-list').attr('id','new-nav-list'); 
     }); 
}); 
</script> 

<a href="#" id="top">Top</a> | 
<a href="#" id="left">Left</a> 
<br /><br /> 
<div id="top-menu"> 
    <div id="top-nav-list"> 
    <ul> 
    <li class="one"><a href="#">One</a></li> 
    <li class="two"><a href="#">Two</a></li> 
    <li class="three"><a href="#">Three</a></li> 
    </ul> 
</div> 
</div> 

<div id="left-menu"> 
    <div id="top-nav-list"> 
    <ul> 
    <li class="one"><a href="#">One</a></li> 
    <li class="two"><a href="#">Two</a></li> 
    <li class="three"><a href="#">Three</a></li> 
    </ul> 
</div> 
</div> 
</body> 
</html> 

回答

1

參考試試這個。

jQuery('#top').click(function(e){ 
     jQuery('#top-menu #top-nav-list').attr('id','new-top-nav-list'); 
}); 
0
jQuery('top-nav-list').attr('id','new-nav-list'); 

(1)你錯過了在代碼中添加#。它應該看起來像

jQuery('#top-nav-list').attr('id','new-nav-list'); 

(2)您也可以不必這樣,2個事件處理這樣

jQuery('#top').click('mouseover', function (e) { // wrong 

(3)ID應該是唯一的。你不能有多個元素相同的ID。請使用class

+0

我想我已經發現這個JS的原因是HTML有重複的ID,他無法修復HTML。 – Barmar

3

它應該是:

jQuery('#top').click(function(e){ 
      jQuery('#top-nav-list').attr('id','new-top-nav-list'); 
    }); 

.click()只是有一個函數的參數,還有在它前面的(你好像與.on()被混合起來)沒有事件名稱參數。您需要在top-nav-list的選擇器中包含#。並且您在new-top-nav-list中忽略了-top

而任何需要更改元素ID的設計對我來說都是可疑的。

0

嘗試這個

 jQuery('#top').on("click",function (e) { 
     alert(jQuery('#top-nav-list').attr('id')) 
    jQuery('#top-nav-list').attr('id', 'new-nav-list'); 
}); 

Fiddle Demo