jQuery:如何用非超链接文本替换部分原始超链接?

时间:2015-11-19 21:15:24

标签: javascript jquery

我有一个班级,比方说.check-status,这是一个包含超链接的文本。

我在点击时有一个事件监听器,它应该用变量statusResponse替换该文本,然后说'再次检查'。所以它会说'你的状态正在等待中。再检查一遍';但“再次检查”需要是原始超链接,“您的状态待定”应该是常规文本。

我知道如何使用以下内容:

$('.check-status').text(statusResponse).append(' Check again')

但是这给了我一切作为超链接,我只想要'再次检查'部分是超链接。

如何在不创建新div等的情况下实现这一目标?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于您希望超链接仅位于完整文本的一部分上,因此您只需要为该文本添加锚元素,而完整文本应使用您的类格式化。所以继续这样:

<强> HTML

var statusResponse = "Your status is pending. ";
var checkAgain = "Check again."
$('.check-status>a').before(statusResponse).text(checkAgain);

<强>的JavaScript

public ActionResult AnswerQuestions(int ID, Response model)
    {

        model.Answers = model.Answers.Where(a => !String.IsNullOrEmpty(a.TextAnswer) || a.RatingAnswer.HasValue).ToList();
        model.UserID = User.Identity.GetUserId();
        model.QuestionnaireID = ID;            

        db.Responses.Add(model);
        db.SaveChanges();

        return RedirectToAction("Details", "Responses", new { id = ID });


    }

以下是fiddle作为演示。

答案 1 :(得分:1)

&#13;
&#13;
var statusResponse = "Your status is pending.",
    customFlag = false;

$(".custom-btn").click(function(){
    if(!customFlag){
        customFlag = true;
        var checkStatus = $(".check-status");
        checkStatus.before(statusResponse + " ").text("Check again");
    }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="custom-btn">Click me</button>
<br/><br/>
<a class="check-status" href="#">Check your status.</a>
&#13;
&#13;
&#13;

这是做什么的?

  1. 首先,因为我们经常重复$(".check-status"),所以最好将它放在名为checkStatus的var中。
  2. 使用before,我们会将checkStatus内的文字放在 checkStatus之前和之外。
  3. 位于statusResponse内的文字现在位于checkStatus对象内。
  4. 我们只希望这种情况发生一次,因此需要一个标志。