jQuery通过单击锚链接更改id元素

时间:2013-07-30 05:36:07

标签: jquery

我正在尝试更改top(锚点链接ID)的click事件上的id元素。 例如:

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

将会是:

<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>

4 个答案:

答案 0 :(得分:3)

应该是:

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

.click()只有一个函数参数,前面没有事件名称参数(你似乎把它与.on()混合起来)。您需要在#的选择器中加入top-nav-list。你在-top中遗漏了new-top-nav-list

任何需要更改元素ID的设计对我来说都是可疑的。

答案 1 :(得分:1)

尝试参考。

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

答案 2 :(得分: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

答案 3 :(得分: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