Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jquery中拆分html标记_Jquery - Fatal编程技术网

在jquery中拆分html标记

在jquery中拆分html标记,jquery,Jquery,如何在jquery中拆分此值。我本来打算使用split函数,但我认为可能有一种更简单的方法 var location = <span class="title">Greenbeck</span><br>9th Street<br>2554 glockcove<br>State, OX 10025<a class="loc" href="#" title="More info">Click For More Info</

如何在jquery中拆分此值。我本来打算使用split函数,但我认为可能有一种更简单的方法

var location = <span class="title">Greenbeck</span><br>9th Street<br>2554 glockcove<br>State, OX 10025<a class="loc" href="#" title="More info">Click For More Info</a>
var location=Greenbeck
9th Street
2554格洛克科夫州,OX 10025
我想分割它,这样我就得到了这个结果。 德克萨斯州格洛克科夫州格林贝克第九街10025号

我打算这样使用split。 var spl=location.split(“
”,location.length); 然后再次使用拆分,然后再使用a等进行拆分,但似乎有一种更简单、更有效的方法。

$(“选择器”).text()给出元素的内部纯文本,因此您可以尝试换行和文本(未尝试):

var plainAddress=$(''+位置+'').text();
您可以尝试:

 var location = $('<div><span class="title">Greenbeck</span><br>9th Street<br>2554 glockcove<br>State, OX 10025<a class="loc" href="#" title="More info">Click For More Info</a></div>');
location.find('a.loc').detach();
console.log(location.text());
var location=$('Greenbeck
9th Street
2554 glockcove
State,OX 10025'); location.find('a.loc').detach(); console.log(location.text());
如果在jQuery中执行,实际上会容易得多:

假设位置是一个字符串,您可以立即将其转换为jquery对象:
$(位置)

既然它是一个对象,您就可以遍历每个对象:
$(location).each()

或者可以将其映射到对象或数组中:
myArr=$(location).map()

例如:


请记住,您必须去掉空白元素

从一点原始Javascript开始,然后使用jQuery:


  • 带有空格
  • 将字符串转换为
    DIV
    ,以便于在上面使用jQuery
  • 这些讨厌的
    A
    标记来自jQuery对象的
  • 只显示
  • var$html,结果,位置='…';
    $html=$(“”).append(location.replace(/
    /gi,”); $($a',$html).remove(); 结果=$html.text();

    正如建议的那样,映射是过滤和连接的正确方式,您甚至需要.contents()来检索文本节点,因此:

    var plainAddress = $('<div>'+location+'</div>').contents().map(function(){
        var e = $(this);
        return (e.is('a') || e.is('br')) ? null : e.text();
    }).get().join(' ');
    // ouptput : 'Greenbeck 9th Street 2554 glockcove State, OX 10025'
    
    var plainAddress=$(''+位置+'').contents().map(函数(){
    var e=$(本);
    返回(e.is('a')| | e.is('br'))?null:e.text();
    }).get().join(“”);
    //输出:“格林贝克第九街2554号,格洛克科夫州,OX 10025”
    

    小心删除或分离,因为它们会修改dom树,这不同于筛选收集结果…

    感谢您的帮助,但不幸的是,这是一个更糟糕的结果。Greenbeck 9th Street 2554 glockcoveState,OX 10025单击以获取更多信息这也会显示链接中的文本-
    单击以获取更多信息。这已关闭,但我需要将其分开。你的结果给了我格林贝克第九街2554号格洛克考夫州,OX 10025。当它应该像我在上面的文章中的例子。格洛克科夫州格林贝克第九街,邮编10025。不管怎样,我可以这样做,但要把它们分开。还有,为什么我要像你不需要使用的那样用div标签再次包装它,除非你想存储你所编辑的内容。嘿,rkw,我喜欢这种风格。简单。在执行每个循环之前,我尝试使用YSRB detach方法删除a标记。但是它没有拆下a标签。我需要删除字符串末尾的“单击以获取更多信息”。remove()
    。detach()
    仅在DOM树==>的上下文中使用时修改DOM树,例如
    $(“a”)。remove(),如果它们在其他上下文中使用==>则不可用,例如$
    (“a”,“someOtherContext”).remove()你是对的…我的意思是修改任何虚拟或非dom树,这只是因为当你只需要过滤时修改一棵树是一件微不足道的事情,这是一个不太繁重的操作。。。
    
    var $html, result, location = '...';
    
    $html = $("<div></div>").append(location.replace(/<br>/gi, " "));
    $("a", $html).remove();
    result = $html.text();
    
    var plainAddress = $('<div>'+location+'</div>').contents().map(function(){
        var e = $(this);
        return (e.is('a') || e.is('br')) ? null : e.text();
    }).get().join(' ');
    // ouptput : 'Greenbeck 9th Street 2554 glockcove State, OX 10025'