jQuery .click()没有正确绑定

时间:2010-05-12 13:13:22

标签: jquery

我想在点击链接时执行一些操作,我使用以下代码来实现这一点,但它很少有效。如果我点击链接它通常刷新页面,并且1/10次它实际上会弹出“嗨”。有什么问题?

$(document).ready(function()
{
    $('#slconfiglink').click(function()
    {
        alert("hi");
        return false;
    });

});

HTML:

<ul>
    <li><a href="#" id="slconfiglink">Config 1</a></li>
</ul>

请注意,ID不会在HTML

中的其他位置复制

5 个答案:

答案 0 :(得分:5)

确保<a>有效href,如下所示:

<a href="#" id="slconfiglink">Config 1</a>

您的主播需要有hrefname才有效,否则您会得到一些有趣的行为,这些行为会因使用的浏览器而异。

此外,除非您需要悬停CSS等的锚点...您可以选择将点击处理程序放在<li>上,如下所示:

<ul>
  <li id="slconfiglink">Config 1</li>
</ul>

要检查的其他一些事项,请确保ID是唯一的,如果它不使用类class="slconfiglink",而您的选择器将是".slconfiglink"而不是"#slconfiglink"

如果您的元素即时添加,请从

更改
$('#slconfiglink').click(function() {

要像这样使用.live()(或者使用类选择器,如果适用多个注释):

$('#slconfiglink').live('click', function() {

答案 1 :(得分:2)

使用preventDefault()方法确保浏览器不遵循链接。

$(document).ready(function()
{
    $('#slconfiglink').click(function(e) {
        e.preventDefault();
        alert("hi");
    });
});

答案 2 :(得分:1)

元素是动态创建的吗?如果您使用Javascript添加它,则需要在将事件处理程序添加到DOM后重新附加它。

答案 3 :(得分:0)

昨天我遇到了同样的问题。
为了解决我刚刚使用简单的javascript和jQuery。

这就是我所做的:

<script>
    function yourFunction()
    {
        alert("hi");
        //$("#slconfiglink").doWhatYouWant();
    }
    $(document).ready(function()
    {
        $("#slconfiglink").attr('onclick', 'yourFunction();')
           //I did it in this way to garantee the function 
           //will only be called after the DOM is ready
    });
</script>

<a id="slconfiglink" href="javascript:;">click me</a>

我希望这可能有用! ^^

答案 4 :(得分:0)

你可以尝试将锚标签的href更改为 '的javascript:无效(0);'