jquery字符串替换?

时间:2013-05-23 15:34:39

标签: jquery xml

在使用curl解析xml Feed后,我的页面上出现了以下格式的html:

<div class="rssfeed">
    <link> 
    http://example.com/cp/?(string_of_numbers)
    <a href="http://example.com/cp/?(same_string_of_numbers)">example</a>
</div>

其中<link>没有结束标记,并且最后一串数字动态变化,我需要删除这些形成错误的元素,它首先在文本节点之前完全保留href所以我希望能够搜索对于以http:// example.com/cp/开头的字符串?这只是链接的直接孩子,我希望这样做:

jQuery('<link>:regex(^[*])').remove();

使用james padolsey's regex或任何其他方法,尝试了以下但无济于事:

var reg = /\<link>.*\<a/;
jQuery(".rssfeed .rssfeed <link>").filter(function(){
    return jQuery(this).text().match(reg);  
}).html(function(i,h) { 
    var nr = h.match(reg);
    jQuery(this).after(nr[0]);
    return h.replace(reg,'');
});

和此:

// Get the product number that lies between [ ] marks from all div elements
jQuery('.rssfeed .rssfeed:contains('<link>'+*+')').html(function() { 

//Look for the wildcard string and save it to a variable. how can I search within the string?!
        var $finalstring = jQuery(this).search('<link>'+*+');

//remove it from the string
jQuery(this).replace($finalstring, '');

    });

但似乎没有任何效果。 有人可以帮忙吗? 更新: jsfiddle

2 个答案:

答案 0 :(得分:1)

像这样 -

$('.rssfeed').contents().filter(function(){
  return !$(this).is('a,h1,p');
}).remove();

演示--> http://jsfiddle.net/kYwk9/4/

答案 1 :(得分:0)

这将循环遍历所有rssfeed div并将其替换为div并仅保留有效的子标记:

$(".rssfeed").each(function() {
    $(this).replaceWith($("<div></div>").addClass("rssfeed").append($("> *:not(link)", $(this))));
    });

请参阅更新的jsFiddle:http://jsfiddle.net/qSV4B/