在使用选择器时传递函数参数的好方法是什么?
What is a good way to transfer function arguments when using selectors?
我试图通过替换以下
将我的HTML从我的js中隔离出来<div id = "foo" onclick="bar(variable)"></div>
<div id = "foo"></div>
$(document).ready(function() {
$("#foo").click(function(event) {
bar(???);
});
});
现在,传递bar()
参数的好方法是什么?
我应该把它和一些元素id合并吗?或者我是否应该在加载页面时使用PHP将其声明为JS变量?还是有更好的办法?
您可以为项目本身添加一个属性,并从click处理程序中检索该属性。
<div id="foo" data-item="29"></div>
$(document).ready(function() {
$("#foo").click(function(event) {
bar($(this).data("item"));
});
});
当然,如果你只有其中一个,你不需要抽象数据号,你可以这样做:
$(document).ready(function() {
$("#foo").click(function(event) {
bar(29);
});
});
但是,我认为我们都假设您希望29来自标记,以便您可以在许多元素上使用通用的单击处理程序。如果是这种情况,那么第一个方法就可以完成。
简单-如果您使用php获取变量:
<div id="foo"></div>
$(document).ready(function() {
$("#foo").click(function(event) {
bar( <?= $variable ?> );
});
});
我建议像其他人建议的那样使用data属性。这不是有效的html,但它在今天使用的所有浏览器中都有效…
喜欢编写有效代码的人(在这种情况下不是我)喜欢将数据添加到class属性中,或者只是在javascript中设置它。
您可以将参数存储为数据属性:
<div id="foo" data-bar="29"></div>
,
$(document).ready(function() {
$("#foo").click(function(event) {
bar($(this).data('bar'));
});
});
大多数人认为他们需要参数来定位被单击的元素的子元素,或者具有已知路径的元素。对于这类事情,最好的做法是根本不使用参数,而是从被单击的节点遍历DOM以找到适当的元素。
$("#foo").click(function(event) {
var doSomethingTo = $(this).find('div')[0];
doSomethingTo.hide();
});
相关文章:
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 列出没有 mysql 的元素的最佳方法是什么
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么