jQuery .prepend()文本到锚标签是可点击的。我只想要纯文本

时间:2017-09-21 03:26:16

标签: jquery

我试图在使用jQuery跟随某个模式的所有链接之前添加一些文本。

如果链接遵循此结构:

<a href="//example.com/u/foo/">foo</a>

我想在它之前添加文字&#34;列出:&#34;

我可以使用以下方式定位链接:

$("a[href*='/u/']")

它有效。文本已添加。

问题是我不希望添加的文字成为可点击的<a>标记的一部分。

我想要实现的目标是:

&#13;
&#13;
<span>Listed by: <a href="#">Foo</a></span>
&#13;
&#13;
&#13;

但我得到了这个:

&#13;
&#13;
<a href="#"><span>Listed by: </span>Foo</a>
&#13;
&#13;
&#13;

我不希望&#34;列出:&#34; 是可点击的。我想把它作为纯文本。

这是我的完整代码:

&#13;
&#13;
$("p>small.text-muted>a[href*='/u/']").prepend("<span class='listed-by'>Listed by: </span>");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>
  <small class="text-muted">
    <a href="/example.com/category/bar/">bar</a> | <a href="//example.com/u/foo/">foo</a> | 2 views
  </small>
</p>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

跨度是否需要环绕锚点?您可以使用insertBefore()。请注意,内容和元素顺序是从prepend()切换的。

$("<span class='listed-by'>Listed by: </span>").insertBefore("p>small.text-muted>a[href*='/u/']");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>
  <small class="text-muted">
    <a href="/example.com/category/bar/">bar</a> | <a href="//example.com/u/foo/">foo</a> | 2 views
  </small>
</p>

答案 1 :(得分:0)

你可以像这样解决问题

var oldHtml = $("a[href*='/u/']").html(); // You retrieved all anchor element
var newHtml = "<span> Listed by: " + oldHtml + "</span>";
$(".text-muted").html(newHtml);

我希望这可能有用!

答案 2 :(得分:0)

你能尝试这样做吗?

$("p>small.text-muted>span").append("<a href='//example.com/u/foo/'>foo</a>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
  <small class="text-muted">
<a href="/example.com/category/bar/">bar</a> | <span class='listed-by'>Listed by: </span> | 2 views
  </small>
</p>