Javascript 如何使用多个id简化JS

Javascript 如何使用多个id简化JS,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我正在尝试为同一个with类创建多个id和accordian的选项卡,我有下面的代码,正如预期的那样运行良好,有人能帮我简单地做到这一点吗 $("#tabs-1 .inmedia-card").slice(0, 6).css('display', 'flex'); var totalpost1 = $("#tabs-1 .inmedia-card").length; if ($("#tabs-1 .inmedia-card").length > 6 ){ $("#tabs-1 .b

我正在尝试为同一个with类创建多个id和accordian的选项卡,我有下面的代码,正如预期的那样运行良好,有人能帮我简单地做到这一点吗

$("#tabs-1 .inmedia-card").slice(0, 6).css('display', 'flex');
var totalpost1 = $("#tabs-1 .inmedia-card").length;
if ($("#tabs-1 .inmedia-card").length > 6 ){
    $("#tabs-1 .btn-clk-loadmr").css('display', 'inline-block');
    $("#tabs-1 .btn-clk-loadmr").on('click', function (e) {
        e.preventDefault();
        $("#tabs-1 .inmedia-card:hidden").slice(0, 6).css('display', 'flex');
        visiblepost1=$("#tabs-1 .inmedia-card:visible").length;
        if ( visiblepost1 == totalpost1 ){   
            $("#tabs-1 .btn-clk-loadmr").css('display', 'none');
        }
    });
}

$("#tabs-2 .inmedia-card").slice(0, 6).css('display', 'flex');
var totalpost2 = $("#tabs-2 .inmedia-card").length;
if ($("#tabs-2 .inmedia-card").length > 6 ){
    $("#tabs-2 .btn-clk-loadmr").css('display', 'inline-block');
    $("#tabs-2 .btn-clk-loadmr").on('click', function (e) {
        e.preventDefault();
        $("#tabs-2 .inmedia-card:hidden").slice(0, 6).css('display', 'flex');
        visiblepost2=$("#tabs-2 .inmedia-card:visible").length;
        if ( visiblepost2 == totalpost2 ){   
            $("#tabs-2 .btn-clk-loadmr").css('display', 'none');
        }
    });
}

$(".tab-acrdion-body .inmedia-card").slice(0, 6).css('display', 'flex');
var totalpost = $(".tab-acrdion-body .inmedia-card").length;
if ($(".tab-acrdion-body .inmedia-card").length > 6 ){
    $(".tab-acrdion-body .btn-clk-loadmr").css('display', 'inline-block');
    $(".tab-acrdion-body .btn-clk-loadmr").on('click', function (e) {
        e.preventDefault();
        $(".tab-acrdion-body .inmedia-card:hidden").slice(0, 6).css('display', 'flex');
        visiblepost=$(".tab-acrdion-body .inmedia-card:visible").length;
        if ( visiblepost == totalpost ){   
            $(".tab-acrdion-body .btn-clk-loadmr").css('display', 'none');
        }
    });
}

您可以创建一个函数,将父元素传递给它,然后使用$.find。。要选择和修改所有不同的子元素,请执行以下示例:

function process($parent) {
  $parent.find(".inmedia-card").slice(0, 6).css('display', 'flex');
  var totalpost1 = $parent.find(".inmedia-card").length;
  if ($parent.find(".inmedia-card").length > 6 ){
      $parent.find(".btn-clk-loadmr").css('display', 'inline-block');
      $parent.find(".btn-clk-loadmr").on('click', function (e) {
          e.preventDefault();
          $parent.find(".inmedia-card:hidden").slice(0, 6).css('display', 'flex');
          visiblepost1=$parent.find(".inmedia-card:visible").length;
          if ( visiblepost1 == totalpost1 ){   
              $parent.find(".btn-clk-loadmr").css('display', 'none');
          }
      });
  }
}
process($("#tabs-1"));
process($("#tabs-2"));
$(".tab-acrdion-body").each(function(){
  process($(this));
});

您可以创建一个函数,将父元素传递给它,然后使用$.find。。要选择和修改所有不同的子元素,请执行以下示例:

function process($parent) {
  $parent.find(".inmedia-card").slice(0, 6).css('display', 'flex');
  var totalpost1 = $parent.find(".inmedia-card").length;
  if ($parent.find(".inmedia-card").length > 6 ){
      $parent.find(".btn-clk-loadmr").css('display', 'inline-block');
      $parent.find(".btn-clk-loadmr").on('click', function (e) {
          e.preventDefault();
          $parent.find(".inmedia-card:hidden").slice(0, 6).css('display', 'flex');
          visiblepost1=$parent.find(".inmedia-card:visible").length;
          if ( visiblepost1 == totalpost1 ){   
              $parent.find(".btn-clk-loadmr").css('display', 'none');
          }
      });
  }
}
process($("#tabs-1"));
process($("#tabs-2"));
$(".tab-acrdion-body").each(function(){
  process($(this));
});

每个函数之间的所有更改都是主id选择器。因此,您可以在所有这些元素上使用公共类,并在jQuery选择器中使用该类从父元素遍历以查找相关子元素,从而使JS逻辑干涸。试试这个:

$'.tab'.eachfunction{//将此类添加到所有相关元素 让$tab=$this; 让$cards=$tab.find'.inmedia card'; 让totalPost=$cards.length; $cards.slice0,6.css'display','flex'; 如果$cards.length>6{ $tab.find'.btn clk loadmr'.css'display','inline block'.on'click',function e{ e、 防止违约; $tab.find'.inmedia卡:隐藏'.slice0,6.css'display','flex'; 让visiblepost=$tab.find'.inmedia卡:可见'.length; 如果visiblepost1===totalpost1{ $tab.find'.btn clk loadmr'.hide; } }; } };
我还强烈建议更改.slice0,6.css'display',X'逻辑,以便在父元素上使用css类,而您可以在父元素上打开或关闭该类,但该类的实现取决于您的HTML结构。

每个函数之间的所有更改都是主id选择器。因此,您可以在所有这些元素上使用公共类,并在jQuery选择器中使用该类从父元素遍历以查找相关子元素,从而使JS逻辑干涸。试试这个:

$'.tab'.eachfunction{//将此类添加到所有相关元素 让$tab=$this; 让$cards=$tab.find'.inmedia card'; 让totalPost=$cards.length; $cards.slice0,6.css'display','flex'; 如果$cards.length>6{ $tab.find'.btn clk loadmr'.css'display','inline block'.on'click',function e{ e、 防止违约; $tab.find'.inmedia卡:隐藏'.slice0,6.css'display','flex'; 让visiblepost=$tab.find'.inmedia卡:可见'.length; 如果visiblepost1===totalpost1{ $tab.find'.btn clk loadmr'.hide; } }; } };
我还强烈建议更改.slice0,6.css'display',X'逻辑,以便在父元素上使用css类,而您可以在父元素上打开或关闭该类,但该类的实现取决于您的HTML结构。

这与预期一样正常,但不建议团队使用ES6,javascript版本。谢谢你的帮助是的,我理解,如果Put let也说这是es6,我也有同样的感觉,你是一个更好的团队,可以简单地改为varyep,我也这么做了,但他们不接受没有问题。我希望大家都能很好地处理这些问题:这正如预期的那样运行良好,但不建议团队使用ES6,javascript版本。谢谢你的帮助是的,我理解,如果Put let也说这是es6,我也有同样的感觉,你是一个更好的团队,可以简单地改为varyep,我也这么做了,但他们不接受没有问题。我祝你在处理这些问题时一切顺利: