将div元素替换为链接

时间:2019-03-01 13:17:11

标签: javascript jquery

function replaceLink(href_array){
    $('.externalLink').each(function(index){
        $(this).replaceWith(function() {
            if ($(this).text() != "") {
                return $('<a />').append($(this).contents()).attr('href', href_array[index]);
            }
            else { // do not use
                return $('<a />').append(href_array[index]).attr('href', href_array[index]);
            }
        });
    });
};

初始页面具有以下结构

body 
    p div.externalLink /p
    p div.externalLink /p
    p div.externalLink /p
    p div.externalLink /p
    p div.externalLink /p
    p div.externalLink /p
/body

应该在脚本之后

body 
    p a#href /p
    p a#href /p
    p a#href /p
    p a#href /p
    p a#href /p
    p a#href /p
/body

但事实证明

body 
    p /p a#href
    p /p a#href 
    p /p a#href
    p /p a#href
    p /p a#href
    p /p a#href
/body

那是怎么做的?

at the bottom as it should be on top of how it turns out

1 个答案:

答案 0 :(得分:2)

您正在div标签内创建p标签,这是不正确的,打开的div标签将自动关闭之前的p标签,因此{{1 }}工作不正常。

replaceWith内尝试div

来源-Why <p> tag can't contain <div> tag inside it?

div
var href_array = [
  "Href1", "Href2", "Href3", "Href4", "Href5", "Href6"
]
function replaceLink(href_array){
    $('.externalLink').each(function(index){
        $(this).replaceWith(function() {
            if ($(this).text() != "") {
                return $('<a />').append($(this).contents()).attr('href', href_array[index]);
            }
            else { // do not use
                return $('<a />').append(href_array[index]).attr('href', href_array[index]);
            }
        });
    });
}

replaceLink(href_array)