所以,我有两个js变量,我经常使用它们:
var rhpp = jQuery(this).parents('.rhp');
var rhp_id = rhpp.data("pi");
例如:
function my_function_1 (){
jQuery(document).on('click', '.button_1', function (e) {
var rhpp_1= jQuery(this).parents('.rhp');
var rhp_id_1 = rhpp_1.data("pi");
//do something
});
}
function my_function_2 (){
jQuery(document).on('click', '.button_2', function (e) {
var rhpp_2 = jQuery(this).parents('.rhp');
var rhp_id_2 = rhpp_2.data("pi");
//do something
});
}
function my_function_3 (){
jQuery(document).on('click', '.button_3', function (e) {
var rhpp_3 = jQuery(this).parents('.rhp');
var rhp_id_3 = rhpp_3.data("pi");
//do something
});
}
因为它,我想把它变成一个我可以重用的函数:
function RHP_PARENT(a, b) {
var a = jQuery(this).parents('.rhp');
var b = a.data("pi");
}
然后,RHP_PARENT("rhpp", "rhp_id");
当然,这是不对的。我不太熟悉如何为变量创建函数。
有人能告诉我吗?
谢谢!
答案 0 :(得分:3)
你可以创建一个返回这两个值的函数。
function getRhpParent(element) {
var rhpp = jQuery(element).parents('.rhp');
return {
rhpp: rhpp,
rhpp_id: rhpp.data("pi")
};
}
// Usage
var temp = getRhpParent(this);
var rhpp = temp.rhpp;
var rhp_id = temp.rhp_id;
答案 1 :(得分:1)
你可以这样做:
function RHP_PARENT(that) {
var a = jQuery(that).parents('.rhp');
var b = a.data("pi");
return { parents: a, data: b };
}
这允许你写:
var rhp_id_1 = RHP_PARENT(this).data;
答案 2 :(得分:1)
您是否打算在RHP_PARENT
之外访问这些变量?
如果是这样,您应该在函数外部实例化a
和b
。
您是否打算将a
和b
作为RHP_PARENT的属性进行访问?
在这种情况下,您可能需要执行以下操作:
var RHP_PARENT = {
'a': (function(){
jQuery(this).parents('.rhp');
})(),
'b': (function(){
this.a.data("pi");
})()
}
基于您的问题并不完全清楚您的用例是什么,因此很难制定单一答案。
修改强>
您似乎更新了问题,这里有两个可行的解决方案。
以下代码将遍历所有具有以“button”开头的类的元素。这解决了同质用例:
$("[class^='button']").each(function(){
$(this).click(function (e) {
var rhpp = jQuery(this).parents('.rhp');
var rhp_id = rhpp.data("pi");
//do something
});
})
以下解决方案解决了更一般的用例,并且更加灵活。这里的优点是获取rhhp和rhp_id的业务逻辑被分解为辅助函数,从而使其更具可重用性。您还可以使用this
:
var my_functions = {
get_rhhp: function(el){
return jQuery(el).parents('.rhp');
},
get_rhp_id: function(rhhp){
return rhhp.data("pi");
},
"my_function_1": function(){
jQuery(document).on('click', '.button_1', function (e) {
var rhhp = get_rhhp();
var rhp_id = get_rhp_id(rhhp);
//do something
});
},
"my_function_2": function(){
jQuery(document).on('click', '.button_2', function (e) {
var rhhp = get_rhhp();
var rhp_id = get_rhp_id(rhhp);
//do something
});
},
"my_function_3": function(){
jQuery(document).on('click', '.button_3', function (e) {
var rhhp = get_rhhp();
var rhp_id = get_rhp_id(rhhp);
//do something
});
}
}