2015-12-30 152 views
3

来自具有类.edit-links的字段我可以检索值,但$(this).next(".edit-url").val();仅返回第一个找到的元素,然后仅返回未定义的值。在控制台中,我可以看到“this”按预期定位了第一个元素,但第二个.edit-url未找到并返回prevObject。每个循环中的第二个元素返回undefined

$('#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('')); 
 

 
    }); 
 
}
<button id="edit">Edit</button> 
 
<li data-identifier="4.3e43f44714869abce3fabc5"> 
 
    <input class="edit-link" data-meta="internal" data-tempurl="/internal-page.html" type="text" value="Stöd"> 
 
</li> 
 
<li> 
 
    <input class="edit-link" data-meta="external" type="text" value="Link"> 
 
    <input class="edit-url" type="text" data-tempurl="www.link.se" value="www.link.se"> 
 
</li> 
 
<li> 
 
    <input class="edit-link" data-meta="external" type="text" value="link2"> 
 
    <input class="edit-url" type="text" data-tempurl="www.link2.se" value="www.link2.se"> 
 
</li> 
 
<li> 
 
    <input class="edit-link" data-meta="external" type="text" value="link3"> 
 
    <input class="edit-url" type="text" data-tempurl="www.lin3k.se" value="www.link3.se"> 
 
</li>

+0

http://codepen.io/stuffoak/pen/zvjOgM?editors=101 – maho

回答

1

这里

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

在这一行错误删除所有元素与类编辑URL但需要删除只有一个,为当前元素。

你可以把它改成

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

,或者只是把它循环后

edit.revertLink = function() { 

    $('.edit-link').each(function(index) { 
     ... 
    }); 
    $(".edit-url").remove(); 
} 
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当你的meta是外部的,所以下一个链接不会找到它的编辑网址。你应该这样做。

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

您正在移除所有​​。尝试如下。

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

,而不是

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

CODE PEN

相关问题