如何将多个变量从函数传递给多个jquery attr

时间:2015-11-02 03:32:52

标签: javascript jquery

这个问题与:
How to pass multiple variables from funtion to jquery attr

因此,上面的链接显示了如何将多个变量从常规JavaScript函数传递到多个jQuery .attr()函数值的多个解决方案。但问题是,如果你想将这些变量发送到多个jQuery函数怎么办?

这可能听起来很奇怪,这就是为什么我会包含一个例子。

$(function() {

  function definingVars() {
    var ValueOne = "Sucess with the value on input 1";
    var IdOne = successWithTheId1;
    var ClassOne = sucessWithTheClass1;
    var ValueTwo = "Sucess with the value on input 2";
    var IdTwo = successWithTheId2;
    var ClassTwo = sucessWithTheClass2;
    return [ValueOne, IdOne, ClassOne, ValueTwo, IdTwo, ClassTwo];
  }

  $("div:nth-child(1)").attr({
    //  var df = definingVars();  Incorrect syntax!!!
    value: df.ValueOne,
    id: df.IdOne,
    class: df.ClassOne
  })

  $("div:nth-child(2)").attr({
    //  var df = definingVars();  Incorrect syntax!!!
    value: df.ValueTwo,
    id: df.IdTwo,
    class: df.ClassTwo
  })

});
input {
  width: 20em;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type="text" id="noSucessWithTheId1" class="noSucessWithTheClass1" value="No sucess with the value on input 1">
  <input type="text" id="noSucessWithTheId2" class="noSucessWithTheClass2" value="No sucess with the value on input 2">
</div>

请不要问上下文。这是一个虚拟的例子。

$(function() {

  function definingVars() {
    var Value = "Sucess with the value";
    var Id = successWithTheId;
    var Class = sucessWithTheClass;

    return {
      value: Value,
      id: Id,
      class: Class
    };
  }

  $("input").attr(definingVars())

});

这是与此相关的问题中发布的答案之一。它看起来很漂亮,但看起来不可能将同样的概念应用于这个问题开头所述的情况。

2 个答案:

答案 0 :(得分:1)

不确定这是否是您想要做的。

  1. 你错过了一些字符串上的引号
  2. 我将属性存储在数组
  3. 您应该定位输入而不是div
  4. $(function() {
        function definingVars() {
        var ValueOne = "Sucess with the value on input 1";
        var IdOne = "successWithTheId1";
        var ClassOne = "sucessWithTheClass1";
        var ValueTwo = "Sucess with the value on input 2";
        var IdTwo = "successWithTheId2";
        var ClassTwo = "sucessWithTheClass2";
        return [{value:ValueOne, id:IdOne, class:ClassOne}, {value:ValueTwo, id:IdTwo, class:ClassTwo}];
      }
      
      var df = definingVars();
      $("input:nth-child(1)").attr(df[0]);
      $("input:nth-child(2)").attr(df[1]);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div>
      <input type="text" id="noSucessWithTheId1" class="noSucessWithTheClass1" value="No sucess with the value on input 1">
      <input type="text" id="noSucessWithTheId2" class="noSucessWithTheClass2" value="No sucess with the value on input 2">
    </div>

答案 1 :(得分:1)

更改选择器并返回对象而不是数组以简化变量。

您可以使用所需的密钥调用该函数并访问该对象属性。

&#13;
&#13;
$(function() {

  function definingVars() {
  console.log("invoked definingVars");
    return {
      ValueOne: "Sucess with the value on input 1",
      IdOne: "successWithTheId1",
      ClassOne: "sucessWithTheClass",
      ValueTwo: "Sucess with the value on input 2",
      IdTwo: "successWithTheId2",
      ClassTwo: "sucessWithTheClass2"
    };
  };


  $($("div>input")[0]).attr({

    value: definingVars()["ValueOne"],
    id: definingVars()["IdOne"],
    class: definingVars()["ClassOne"]
  });

  $($("div>input")[1]).attr({
    value: definingVars()["ValueTwo"],
    id: definingVars()["IdTwo"],
    class: definingVars()["ClassTwo"]
  });

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type="text" id="noSucessWithTheId1" class="noSucessWithTheClass1" value="No sucess with the value on input 1">
  <input type="text" id="noSucessWithTheId2" class="noSucessWithTheClass2" value="No sucess with the value on input 2">
</div>
&#13;
&#13;
&#13;