因此,我正在努力找出使其发挥作用的最佳方法。我有很长的代码列表,它正在脱离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");
提前感谢您的任何帮助或想法!
答案 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...
}
也许有其他方法可以实现这个...... 但是这个很容易实现。