这似乎很野蛮。我试图传递fApp和sApp并将它们称为对象,并被视为jquery对象。因此,fApp恰好适合这里:$ (ele).obj[fApp](to);并被视为.insertAfter。他们甚至不需要成为对象;我只想要一种方法,这样我就可以传递值,而不用编写1000个追加,前置和其他内容。

再次解释

我知道,我不知道该怎么解释。几乎只是采用“ fApp”并将值设置为“ prependTo”,然后在此处将其命名为“ $(ele).obj[fApp](to);”,并使其表现为好像是实际的prependTo

整个功能只是我的移动附加程序和桌面重新附加器。 from的值是获取父元素的信息,当更改为桌面视图时,它知道在其之前,之后,之前追加,添加前缀。

function appendMaster(ele, to, fApp, sApp) {
    var from = $(ele).parent();
    console.log(fApp);

    var obj = new Object;
    var obj2 = new Object;
    obj[fApp] = fApp;
    obj2[sApp] = sApp;

    var width = $(window).width();
    if (width < 640) {
        $(ele).obj[fApp](to);
    };
    if (width > 640 && width < 966) {
        // Do something
    };
    if (width > 966) {
        $(ele).obj2[sApp](from);
    };
}

appendMaster("#forming","body", "prependTo", "prependTo");

最佳答案

您可以通过JS中的两种方式处理属性:


obj.prop
obj['prop']


除了上面的字符串符号中的'prop'外,您可以放置​​一个变量,在您的情况下为fApp

function appendMaster(ele, to, fApp, sApp) {
  var from = $(ele).parent();
  console.log(fApp);

  var width = $(window).width();
  if (width < 640) {
      $(ele)[fApp](to);
  };
  if (width > 640 && width < 966) {
      // Do something
  };
  if (width > 966) {
      $(ele)[sApp](from);
  };
}

09-10 19:14