javascript - 当用户单击任何列表元素时运行函数

标签 javascript jquery

这可能是一个很常见的问题,但我自己找不到答案;

我的所有列表元素都像这样调用函数 setQuery

onClick="admin_stats.setQuery(this);"

有没有办法在单击列表元素时简单地运行它,而不是[硬编码]将其添加到每个列表元素?

我对 jQuery Live 或绑定(bind)/解除绑定(bind)不太熟悉,但我认为它们会在这里发挥作用?

在我重新发明一个看起来相当方形的轮子之前,我想我可能会问=)

<小时/> 编辑:我的列表元素看起来像

<ul>
    <li id="usersPerMonth" onClick="admin_stats.setQuery(this);">Users per Month</li>
    <li id="statsByUser" onClick="admin_stats.setQuery(this);">Stats by User</li>
</ul>

然后使用 this.attr("id") 从 json 样式变量中查找实际的 SQL 文本:

queries : {
    usersPerMonth : " ... some sql ...",
    statsByUser   : " ... some sql ...",
    ...
}

这就是为什么我以这种方式命名 div(并且我愿意接受设计建议)

最佳答案

$(function() {
    $('#myList').delegate('li', 'click', function() {
        admin_stats.setQuery( this );
    });
});

这假设您的 <ul>元素的 ID 为 myList 。它将处理任何 <li> 上的点击。元素,调用您的函数并传递 this作为参数。

.delegate() 代码包含在 $(function() {}); 中以便在 DOM 准备好之前它不会运行。这是 jQuery 的快捷方式 .ready() 功能。

关于javascript - 当用户单击任何列表元素时运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549779/

相关文章:

javascript - 使用 React-Router-Dom 在 React 中传递路由参数

javascript - js函数onclick需要点击一次改变字体

javascript - 如何让 jQuery 效果按顺序运行,而不是同时运行?

jquery - 在动态创建的元素上附加 javascript/jquery 事件

jquery - 单击 Bootstrap 弹出窗口中的链接

javascript - 将 Javascript 对象成员连接在一起?

javascript - 在 JavaScript 中比较数组中的对象 ID

javascript - 在输入字段中输入 id 显示所有信息

javascript - 页面加载时打开第一部分

php - JS 和 PHP 的加载时间不一致