我有一个a
元素,其中包含svg
和一个字符串。我想只选择带有jQuery和.trim()
的字符串,因为它包含空格。当我尝试使用.not()
进行过滤时,我收到错误“Uncaught TypeError:undefined is not function”。
我不想删除svg
元素,但用修剪后的字符串替换未修剪的字符串。所以使用.html()可能是一个坏主意,因为它用修剪过的字符串替换整个内容。
$("document").ready(function() {
$("p.mod-articles-category-readmore a").each(function() {
var $str = $(this).html().not("svg");
$(this).html($.trim($str));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="mod-articles-category-readmore">
<a class="mod-articles-category-title">
<svg><!--svg content--></svg>
<!--whitespace created by Joomla--> Weiterlesen
</a>
</p>
答案 0 :(得分:0)
这是因为.html()返回一个没有not方法的字符串。
$(document).ready(function() {
$("p.mod-articles-category-readmore a").each(function() {
var str = $(this).contents().filter(function(){return this.nodeType==3}).text();
$(this).html(str)
});
});
相反,你可以删除svg元素,所以
$(document).ready(function() {
$("p.mod-articles-category-readmore a svg").remove();
});
答案 1 :(得分:0)
编辑:经过多次游戏后,我设法将SVG部分拉出来并将字符串分成单独的变量:
$("document").ready(function() {
$("p.mod-articles-category-readmore a").each(function() {
var $svg = $(this).children().first().get(0);
var $str = $.trim($(this).last().text());
$html = $str + $svg;
$(this).html($html);
});
});
仅在尝试将两者重新注入DOM时发出,包含SVG的变量转储为jquery对象字符串。
有一个JS小提琴here可能至少可以让你开始。
答案 2 :(得分:-3)
试
.not(svg);
希望这有帮助。