【问题标题】:jQuery - Selecting specific button nested within div ul lijQuery - 选择嵌套在 div ul li 中的特定按钮
【发布时间】:2012-10-30 10:23:49
【问题描述】:

我承认迷路了。我正在尝试选择一个嵌套在嵌套在 div 中的 ul 中的行项目中的按钮

这是创建菜单栏的 php。它通过 ajax 返回到 id 为“menubar”的 div。那部分工作正常。但是,我的点击功能都没有做任何事情。

echo "<ul>";
echo "<li class = 'menu'><button class = 'menbtn' id='scores'>Scores</button></li>";
echo "<li class = 'menu'><button class = 'menbtn' id='rules'>Rules</button></li>";
echo "<li class = 'menu'><button class = 'menbtn' id='courses'>Courses</button></li>";
echo "<li class = 'menu'><button class = 'menbtn' id='history'>Comments</button></li>";
echo "<li class = 'menu'><button class = 'menbtn' id='history'>Reservation</button></li>";
echo "</ul>";

我假设我必须使用某种嵌套选择,因为对于 id 为“scores”的按钮的单击功能 - $('#scores') 什么都不做。我已经尝试了各种嵌套选择器并且已经删除了。

如果有人可以向我展示带有“分数”ID 的按钮的正确选择器,我会从那里弄清楚。

谢谢,

DMD

【问题讨论】:

  • 获取输出标记和 JS 并粘贴到 jsfiddle 或 jsbin。需要更多上下文。点击#scores 应该没问题。我在猜测 $ 准备好之前的语法错误或绑定。

标签: php jquery


【解决方案1】:

您似乎没有将这些事件放在 document.ready 函数中。试着把它们放进去。

示例:

$(document).ready(function(){
   $("#scores").click(function(){
       // Your Stuff
   });
});

【讨论】:

    【解决方案2】:

    这将为您的按钮添加一个事件侦听器。

    $(document).on('click', '#scores', function (){
        //do something
    });
    

    【讨论】:

    • 我的猜测也是如此,但 Q 缺少很多细节。
    • @user1813926 那么请投票并接受答案。乐于助人。
    【解决方案3】:

    首先,您的 html 按钮 Comments 和 reservations 中的标记无效,具有相同的 id,其次

    选择器其实很简单

    $("#scores") //<----
    

    但是由于您没有提供有关如何构建 html 的太多详细信息,因此很难看出真正的解决方案是什么,只能猜测。一件事可能是您需要使用事件 on 在通过 php 添加 html 后触发事件处理程序

    例如

    $("#score").on("click", function(){ //do something});
    

    【讨论】:

    • 非常感谢 - id 没问题。我的 sn-p 编辑不正确。
    【解决方案4】:

    问题是jquery可以读取dom中ajax返回的新元素。 要通知 jquery 重新读取你必须调用 live 的 dom。

    $('#scores').live("click",function(){
         alert("you clicked scores");
    });
    

    【讨论】:

    • 该功能已上线,已弃用,您必须通过功能on进行更改
    • .live 和 .on work,我感谢大家的建议。我怀疑我自己会找到答案。
    【解决方案5】:

    您可以使用live()方法,借助该方法您可以触发通过ajax添加的新元素。

    $(document).ready(function(){
      $('#scores').live('click',function(){
        //Your code
      })
    });
    

    【讨论】:

    • 谢谢。 .live 工作正常;但是我发现它已被弃用,而 .on 也可以使用。
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2021-07-03
    • 2014-01-28
    相关资源
    最近更新 更多