php - 什么是在使用选择器时传递函数参数的好方法?

  显示原文与译文双语对照的内容
0 0

我正在尝试将我的HTML与我的js隔离,替换如下


<div id ="foo" onclick="bar(variable)"></div>


<div id ="foo"></div>
$(document).ready(function() {
 $("#foo").click(function(event) {
 bar(???);
 });
});

现在,将参数传递给 bar()的好方法是什么。

应该将它的与某个元素标识合并? 或者我应该在加载页面时将它声明为一个JS变量? 还是有更好的方法?

时间: 原作者:

0 0

你可以将属性放在项本身上,并从单击处理程序中检索它。


<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来自标记,因这里可以使用常见的单击处理程序。 如果是这种情况,那么第一种方法就完成了。

原作者:
0 0

简单- 如果你正在使用php获取变量:


<div id="foo"></div>
$(document).ready(function() {
 $("#foo").click(function(event) {
 bar( <?= $variable?> );
 });
});

原作者:
0 0

我建议将数据属性作为其他人建议的。 它无效,但是它在今天使用的所有浏览器中都有效。
更喜欢编写有效代码( 在这种情况下不是我)的人,希望将数据添加到类属性中,将它的设置为 javascript 。

原作者:
0 0

可以将该参数存储为数据属性:


<div id="foo" data-bar="29"></div>


$(document).ready(function() { 
 $("#foo").click(function(event) { 
 bar($(this).data('bar')); 
 }); 
}); 

原作者:
0 0

大多数人认为他们需要参数来定位元素,或者已经被单击的元素的元素。 对于这种情况,最好不要使用参数,而是从点击的节点中遍历DOM来找到适当的元素。


$("#foo").click(function(event) {
 var doSomethingTo = $(this).find('div')[0];
 doSomethingTo.hide();
});

原作者:
...