JQuery - 如何为嵌套的每一个获取它

时间:2016-06-07 06:44:07

标签: jquery

我内心都喜欢

$('a[id^="Page"]').each(function () {
   if ($(this).attr("id") == pageId) {
     $('[id="' + pageId + '"]"').each(function () {
       // code here
      });
  }
});

如何访问当前元素,因为this来自之前的each

谢谢!

4 个答案:

答案 0 :(得分:0)

你可以使用回调的第二个参数来获得这样的元素:

 $('a[id^="Page"]').each(function (index, element) {
         if ($(element).attr("id") == pageId) {
                  $('[id="' + pageId + '"]"').each(function (j, pageElment) {
                       console.log(element);
                       console.log(pageElment);
                  });
         }
 });

答案 1 :(得分:0)

首先,您可以使用以下回调签名来消除this

的使用
.each(function(outerIndex, outerElement) {
    .each(function(innerIndex, innerElement) {
        // Do stuff with outerElement...
    });
});

这比使用this重言式更具可读性。

但是,在您的示例中,您根本不需要在第一个each(...内使用第二个each(...,因为您正在查找确切的ID。如果您事先知道pageId,则不需要任何each(...。而只是使用id选择器:

$('#' + pageId).// Do your stuff

答案 2 :(得分:0)

默认情况下,

this指的是调用该函数的上下文。当您在一个或多个元素上调用.each时,函数内的this将始终引用当前元素。

答案 3 :(得分:-1)

只需将this保存到变量,然后就可以使用它了:

$('a[id^="Page"]').each(function () {
     var $that = $(this);

     if ($that.attr("id") == pageId) {
          $('[id="' + pageId + '"]"').each(function () {
              console.log($that.data('val') === $(this).data('val'));
          });
     }
});

如果您的身份证号码为(例如id="12345"),则为read this