Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多变量的js函数_Javascript - Fatal编程技术网

Javascript 多变量的js函数

Javascript 多变量的js函数,javascript,Javascript,因此,我有两个我经常使用的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 =

因此,我有两个我经常使用的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_家长(“rhpp”,“RHP_id”)

当然,这是不对的。我不太熟悉如何为变量创建函数

有人能给我看看吗


谢谢

您可以创建一个返回这两个值的函数

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;

你可以这样做:

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;   

您是否打算访问
RHP\U父级之外的变量?

如果是这样,您应该在函数外部实例化
a
b


您是否打算将
a
b
作为RHP\U母公司的属性访问?

在这种情况下,您可能需要执行以下操作:

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的业务逻辑被分解为助手函数,从而使其更易于重用。您也可以使用
引用同一对象中的其他函数:

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
    });
  }
}

你能详细说明一下你使用这个函数的目的吗?“变量函数”是什么意思?你的意思是经常需要访问“pi”值吗?关键字
this
的作用域是函数。创建一个工作代码的jsbin可能会有帮助,这样我们就可以看到它的意图了。我添加了三个函数来详细说明它。底线是,我想把这两个变量作为一个函数,所以我不需要在每个函数中重复它,这是我没有想到的。谢谢你的帮助!=)看起来有点不舒服。传递jQuery(this),而不是this。然后在函数中使用元素参数…感谢您的帮助!=)我一定要试一试!非常感谢。学到了一些新东西()