2

这可能看起来很野蛮;我正在尝试传递 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");
4

1 回答 1

4

您可以在 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);
  };
}
于 2013-09-11T12:57:24.513 回答