从特定元素之间包含的字符串中剪切出一段文本(jquery / javascript)

时间:2014-01-22 15:29:26

标签: javascript jquery replace

我一直在尝试修改字符串。获取内容,删除其中的一部分,并将该文本复制为段落本身的 alt 属性。我决定启动必须被剪切的文本([并完成它])所以其中的所有内容都必须剪切并粘贴为alt属性。它看起来很容易,但我找不到JQuery(更好)或Javascript的方法,但我知道必须有办法。

在此链接(http://jsfiddle.net/MYbuddy/6psR2/)中,您可以看到我刚刚开发的流程图。使用应用了特定类的列表(.flowchart)自动创建流程图,元素内部是我必须剪切的文本。

<li>list 01 01 01 ([This text must be removed and copied as "alt" or "title" text])</li>

你将在链接上看到的html就是我直接从umbraco获取的HTML,我无法修改它(比如添加特定的样式),为什么我用我的脚本做了一些“稀有”的东西,呵呵

我希望你们这一切都有意义。

谢谢,

1 个答案:

答案 0 :(得分:0)

如果你使用这个jquery:

$('.flowchart li > p').each(function () {
     var $this = $(this),        //store this so we can use it later
         txt = $this.text(),     //this is the current text value
         lText = txt.split('['); //this is splitting the text at the '['

     $this.attr({ title: ""+lText[1] }); //here we are setting the title to lText[1] which is the text AFTER the split
     $this.text(lText[0]);               //here we are setting the current text to lText[0] which is the text BEFORE the split
});

它会将文本分割到将添加到标题的[,然后文本将被设置为文本的第一部分。 如果可能,您应该更改文字,这样您才能获得[而不是([ text ]),否则您只需要更多代码即可将其删除。

这是指向小提琴http://jsfiddle.net/6psR2/4/

的链接

这是一个扩展版本,它将分割开头和结尾:

  $('.flowchart li > p').each(function () {
       var $this = $(this),
       txt = $this.text(),
       lText = txt.split('['),
       rText = txt.split(']');

            if (typeof rText[0] === "undefined")
                {rText[0] = ""}  
            if (typeof rText[1] === "undefined")
                {rText[1] = ""}  
            if (typeof lText[0] === "undefined")
                {lText[0] = ""} 
            if (typeof lText[1] === "undefined")
                {lText[1] = ""} 
            $this.attr({ title: lText[1]+"" });
            $this.text(lText[0]+" "+rText[1]);
    });

它还会检查字符串值是否未定义,如果是,则将其设置为空字符串以保存添加“undefined”作为标题。