2012-08-14 70 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