2012-08-14 77 views
0

下面的代码假设删除#approve和#deny,并回显用户按下其中一个链接时按下的内容。Jquery .unbind和.html不工作

<html> 
<head> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function(){ 
    $('#approve').click(function(){ 
      $('#approve').unbind('click'); 
      $('#deny').unbind('click'); 
      $('.rare').html('Approved!'); 
     }); 
     return false; 
    }); 
    $('#deny').click(function(){ 
      $('#approve').unbind('click'); 
      $('#deny').unbind('click'); 
      $('.rare').html('Denied!'); 
     }); 
     return false; 
    }); 
}) 
</script> 
</head> 
<body> 
<div class="rare"> 
    <a href id="approve">Approve</a> 
    <a href id="deny">Deny</a> 
</div> 
</body> 
</html> 

但它似乎没有工作,我是新来的jquery,所以我不明白为什么它不工作。 jQuery是托管我的谷歌

+0

潜在的问题:使用协议少URL(//而非http://或https://)如果你正在查看本地文件将打破(您不通过服务器提供此页面)。 – ajm 2012-08-14 21:00:10

回答

7

你嵌套看起来坏了,试试这个:

$(function(){ 

    $('#approve').click(function(){ 
     $('#approve').unbind('click'); 
     $('#deny').unbind('click'); 
     $('.rare').html('Approved!'); 
     return false; 
    }); 

    $('#deny').click(function(){ 
     $('#approve').unbind('click'); 
     $('#deny').unbind('click'); 
     $('.rare').html('Denied!'); 
     return false; 
    }); 
}) 

而且,我不会让你为什么要返回错误的假设,但如果你想阻止默认click事件的行为,这是首选的方法:

$('#deny').click(function(e){ 
    // Absorb click 
    e.preventDefault(); 
    $('#approve').unbind('click'); 
    $('#deny').unbind('click'); 
    $('.rare').html('Denied!'); 
}); 

干杯

+0

是的,这也是。你的'return false'应该在大括号内。 – 2012-08-14 20:59:57

+0

他的html是在问题中,a标签必须href,因此不需要preventDefault。 – Fresheyeball 2012-08-14 21:03:59

+1

@Fresheyeball不正确。这些hrefs是有效的,并指向主机服务器上相对于文档根目录的文档。如果他不想在单击时尝试加载它们,则需要'preventDefault'(或返回false)。 – Madbreaks 2012-08-14 21:05:37

1

如果这正是你的代码,你应该得到的firbug/IE的错误安慰。您正在过早关闭已准备就绪的函数$(function(){,并且挂起了一些})以及返回函数外部的值。

你的代码也许应该是:

$(function(){ 
    $('#approve').click(function(){ 
      $('#approve').unbind('click'); 
      $('#deny').unbind('click'); 
      $('.rare').html('Approved!'); 
    }); 
    $('#deny').click(function(){ 
      $('#approve').unbind('click'); 
      $('#deny').unbind('click'); 
      $('.rare').html('Denied!'); 

    }); 
}); 
+0

每个人都提到所有jQuery问题上的萤火虫。不奇怪,但是,是不是有人使用铬控制台? – keyser 2012-08-14 20:59:38

+0

@Keyser - 我习惯于使用Firebug,Chrome的调试器对我来说有点不直观。尽管我的店里有许多人都发誓。 – scrappedcola 2012-08-14 21:00:55

+0

@Keyser绝对,因为它好得多! – Madbreaks 2012-08-14 21:01:02