.append或.after定义为变量?

时间:2017-05-20 18:59:56

标签: javascript jquery function

因此,我正在努力找出使其发挥作用的最佳方法。我有很长的代码列表,它正在脱离JSON数据库,我正在尝试简化它。我创建了以下函数:

var insertData = function(formattedData, originalData, referencePoint, insertPoint, insertStyle) {
  var formattedData = originalData.replace("%data%", referencePoint);
  $(insertPoint).insertStyle(formattedData);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>

是否可以定义一个类似于我在此处所拥有的点函数 - 作为函数变量之一引用?当前代码表示insertStyle不是函数 - 如何让代码识别insertStyle应该采用变量名?如同,如果insertData调用的第五个变量是追加的,则应该将其读作.append

作为参考,这是我如何调用函数:

insertData("formattedHeaderName", "HTMLheaderName", bio.name, "#header", "prepend");

提前感谢您的任何帮助或想法!

2 个答案:

答案 0 :(得分:1)

您正在寻找计算属性:

$(insertPoint)[insertStyle](formattedData);

基本上,每个属性访问都可以表示为计算属性:

foo["bar"];  // same as foo.bar

在原始代码中,您使用的是非计算属性,因此解释器会查找一个字面上称为“insertStyle”的方法,该方法不存在。

答案 1 :(得分:0)

将参数传递给函数时,就像在:

中一样
insertData("formattedHeaderName", "HTMLheaderName", bio.name, "#header", "prepend");

这些参数是字符串。不是jQuery方法。

因此,解决方案是定义您需要使用的所有方法...
然后只比较传递给决定的字符串。

var insertData = function(formattedData, originalData, referencePoint, insertPoint, insertStyle) {

  var formattedData = originalData.replace("%data%", referencePoint);

  if(insertStyle=="prepend"){
    $(insertPoint).prepend(formattedData);
  }
  if(insertStyle=="append"){
    $(insertPoint).append(formattedData);
  }
  if(insertStyle=="after"){
    $(insertPoint).after(formattedData);
  }
  // And so on...
}

也许有其他方法可以实现这个...... 但是这个很容易实现。