只需这样写:
var method = "wrap";
jQuery('.container')[method]("<div>Hello World</div>");
您可以通过两种方式访问对象的属性。通过点表示法或方括号表示法
obj.property
obj['property']
var propName = "property"
obj[propName]
编辑
这里是 MDN会员运营商的链接
简要说明您的代码的作用:
jQuery('.container')+[method]+("<div>Hello World</div>");
它是3个元素的添加:
- 结果集
jQuery('.container')
- 一个
Array
包含一个元素[method]
- 这
String
"<div>Hello World</div>"
其结果取决于实现,但很可能是这样的:
"[object Object].wrap<div>Hello World</div>"
+-------------+
+---+
+--------------------+
结果看起来是这样的,因为如果 JavaScript 引擎toString
无法以其他方式添加元素,它们通常会调用元素。
编辑
更新已编辑的问题:
element.parent().parent().wrap()
例如等于:
element['parent']()['parent']().wrap()
或者
element['parent']().parent()['wrap']()
或任何其他组合点或大括号表示法
您想表示.parent().parent().wrap()
为一个字符串并将其用作访问权限。但这不会那样工作。点表示法或大括号表示法仅返回给定元素的属性。所以parent()
返回你调用parent
的jQuery('.container')
这个返回的对象和你调用parant()
的那个返回的对象wrap()
所以(假设只有你的最后一个函数调用会有参数)你需要这样的东西:
function chainedFunctionCall( obj, chain, arguments) {
var curr = obj;
var splitChain = chain.split("."); //split the 'call chain' passed a strings by '.' (the dot in the string has nothing to do with the dot notation)
//iterate over the resulting array (except the last one where we need to pass the arguments to
for( var i=0 ; i<splitChain.length-1 ; i++ ) {
//call the function by the given name in the chain and store the result as current object
curr = curr[splitChain[i]]();
}
//when we reached the last name in the chain call that function using `apply` so that we can pass the arguments we got as array to the function call, and call it in the context of the current object.
return curr[splitChain[i]].apply(curr,arguments);
}
var obj = $(".container");
var callChain = "parent.parent.wrap";
chainedFunctionCall( obj, callChain, ["<div>your argument you pass there</div>"]);