2011-10-05 23 views
1

我有一個鏈接,看起來像這樣:<a>標籤爲什麼不產生可點擊的鏈接?

<p class="half_text"><?php echo $upvotes; ?> <strong> 
<a id="vote_up" style="color: #295B7B; font-weight:bold;" href="">Vote Up</a> 
</strong> | <?php echo $downvotes; ?> <strong> 
<a id="vote_down" style="color: #295B7B; font-weight:bold;" href="">Vote Down</a>  
</strong></p> 

而且,我試圖讓一些所謂的jQuery代碼。

<script type="text/javascript"> 
$('#vote_up').click(function() 
{ 
    alert("up"); 
}); 
</script> 

但由於某些原因,當按下投票上或下鏈接時,警報不會觸發。任何想法我做錯了什麼?

你可以在這裏看到自己這一點:http://www.problemio.com

+2

要開始,請將您的vote_up和vote_down更改爲類。你應該只在頁面上有一個ID的實例,我猜jQuery不會抓住你想要的。 –

+0

在提到的其他問題(到目前爲止它們都看起來相關)中,還需要從'click'事件處理程序返回false以阻止頁面導航。 –

回答

7

你需要把.ready()處理程序中的代碼:

$(document).ready(function() { 
    $('#vote_up').click(function() 
    { 
     alert("up"); 

     //Return false to prevent page navigation 
     return false; 
    }); 
}); 

.ready()文檔看看:http://api.jquery.com/ready/

這裏的a working jsFiddle

+1

小附錄,但我會設置href =「#」,將「e」作爲參數添加到匿名函數中,然後調用e.preventDefault()。這樣做不需要在函數中返回false。 – calvinf

4

將代碼包裝在.ready()處理程序中。該快捷方式是:

$(function(){ 
    $('#vote_up').click(function() { 
     alert("up"); 
    }); 
}) 

相當於$(document).ready(function(){....})

2

id屬性應該在文檔中是唯一的。如果您希望它適用於多個元素,請考慮使用class

3

不確定是否有必要,但可以嘗試將#置於href屬性中。

另外,如果頁面上有多個屬性,則您使用的鏈接屬性爲id,您應該使用class來代替。

+1

不需要'href'屬性:http://www.w3.org/TR/html401/struct/links.html#h-12.2 – davin

+0

好的,謝謝你的信息 – martincarlin87

+0

@davin實際上沒有href屬性它沒有不要將文字變成鏈接。你知道爲什麼會這樣嗎? – Genadinik

2

不確定這是否會導致您的問題,但您的頁面上有重複的ID。

嘗試將「vote_up」和「vote_down」更改爲類。