当前位置 : 主页 > 网页制作 > JQuery >

让jquery程序运行得更好

来源:互联网 收集:自由互联 发布时间:2021-06-15
我有以下代码: $('#MyDiv .TheClass').eq(TheIndex).removeClass('ClassA');$('#MyDiv .TheClass').eq(TheIndex).removeClass('ClassB');$('#MyDiv .TheClass').eq(TheIndex).addClass('ClassC');$('#MyDiv .TheClass').eq(TheIndex).children().each
我有以下代码:

$('#MyDiv .TheClass').eq(TheIndex).removeClass('ClassA');
$('#MyDiv .TheClass').eq(TheIndex).removeClass('ClassB');
$('#MyDiv .TheClass').eq(TheIndex).addClass('ClassC');

$('#MyDiv .TheClass').eq(TheIndex).children().each(function () {
 //do something here
});

似乎我多次使用$(‘#MyDiv .TheClass’).eq(TheIndex)行;我怎样才能做得更好?

我想到了

var TheDiv = $('#MyDiv .TheClass').eq(TheIndex);

TheDiv.removeClass('ClassA');
TheDiv.removeClass('ClassB');
TheDiv.addClass('ClassC');

TheDiv.children().each(function () {
 //do something here
});

但我想知道那里是否有更好的建议.

谢谢.

jQuery提供了 fluent interface [Wikipedia]的大部分方法:

$('#MyDiv .TheClass').eq(TheIndex)
  .removeClass('ClassA ClassB')
  .addClass('ClassC')
  .children().each(function () { 
      // do something here
  });

如果您确定该元素具有ClassA和ClassB类并且需要ClassC,则可以使用.toggleClass() [docs]

$('#MyDiv .TheClass').eq(TheIndex)
  .toggleClass('ClassA ClassB ClassC')
  .children().each(function () {
      // do something here
  });

虽然不一定与您的案例相关,但如果您想在每个循环后链接更多方法,则以下方法将适用于所选子项.如果你想再次选择原始元素($(‘#MyDiv .TheClass’).eq(TheIndex))你可以使用.end() [docs]在链中“退一步”.

网友评论