每个循环中的第二个元素返回undefined

时间:2015-12-30 08:41:09

标签: jquery

从具有类ID(PK) |Name | Color | Quantity 1 apple red 1 2 apple red 1 的字段中我能够检索值,但.edit-links仅返回找到的第一个元素,然后仅返回undefined。在控制台中,我可以看到“this”按预期定位第一个元素,但找不到第二个.edit-url并返回prevObject。

$(this).next(".edit-url").val();
$('#edit').click(function() {
  edit.revertLink();
});

var edit = {};
edit.revertLink = function() {

  $('.edit-link').each(function(index) {

    var currentName = $(this).val();
    var url = $(this).attr('data-tempurl');
    var meta = $(this).attr('data-meta');
    //edit.changeLiOrgname(this, currentName);

    if (meta === "external") {
      //url = $(this).next(".edit-url").val();
      currentName = $(this).next(".edit-url").val();
      //edit.changeLiOrgURL(this, url);
      $(".edit-url").remove();
    }

    var linkStr = [
      '<a href="' + url + '" class="aktiv">',
      '' + currentName + '',
      '<span class="type float-r">',
      '' + meta + '',
      '</span>',
      '</a>'
    ];

    $(".removeBtn").remove();
    $(this).replaceWith(linkStr.join(''));

  });
}

3 个答案:

答案 0 :(得分:1)

错误

$(".edit-url").remove();

在此行中,您使用类 edit-url 删除所有元素,但只需删除一个当前元素。

您可以将其更改为

$(this).next(".edit-url").remove();

或者,只需在循环之后将其称为

edit.revertLink = function() {

    $('.edit-link').each(function(index) {
      ...
    });
    $(".edit-url").remove();
}

答案 1 :(得分:0)

正是由于这种情况

  if (meta === "external") {
     //url = $(this).next(".edit-url").val();
     currentName = $(this).next(".edit-url").val();
     //edit.changeLiOrgURL(this, url);
    $(".edit-url").remove();
  }

当您的元数据是外部时,您正在删除所有.edit-url,因此下一个链接找不到它的编辑网址。你应该这样做。

$(this).parent().find(".edit-url").remove();

答案 2 :(得分:0)

您要移除所有edit-url。尝试以下。

$(this).next(".edit-url").remove();

而不是

$(".edit-url").remove();

CODE PEN