代码之家  ›  专栏  ›  技术社区  ›  Chris

jquery.click()未正确绑定

  •  5
  • Chris  · 技术社区  · 15 年前

    我想在单击链接时执行一些操作,我使用下面的代码来实现这一点,但是它很少工作。如果我点击链接,它通常会刷新页面,并且会弹出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 回复  |  直到 15 年前
        1
  •  5
  •   Nick Craver    15 年前

    一定要给你 <a> 有效的 href ,像这样:

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

    你的主播需要 HREF 或A name 为了有效,否则你会得到一些有趣的行为,这会因使用的浏览器而有所不同。

    另外,除非您需要悬停CSS等的锚,否则您可以选择将单击处理程序右放在 <li> ,像这样:

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

    其他一些需要检查的东西,确保ID是唯一的,如果它不使用类,比如 class="slconfiglink" 你的选择是 ".slconfiglink" 而不是 "#slconfiglink" .

    如果正在动态添加元素,请从

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

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

    $('#slconfiglink').live('click', function() {
    
        2
  •  2
  •   Fabian    15 年前

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

    $(document).ready(function()
    {
        $('#slconfiglink').click(function(e) {
            e.preventDefault();
            alert("hi");
        });
    });
    
        3
  •  1
  •   David Yell    15 年前

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

        4
  •  0
  •   Jayme Tosi Neto    15 年前

    昨天我也遇到了同样的问题。
    为了解决这个问题,我刚刚将简单的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>
    

    希望这个有用!^ ^

        5
  •  0
  •   Sundararajan S    15 年前

    你能试着把锚标签的href改成 'javascript:void(0);'