2011-10-05 57 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”更改为类。