jQuery - 切换.html文本?

Yam*_*mmi 5 jquery

为什么这不起作用?

http://jsfiddle.net/PdwJ6/

HTML

<a href="#" id="showMore">Before</a>
Run Code Online (Sandbox Code Playgroud)

JS

$('#showMore').click(function() {

$(this).toggle(
function () {
    $(this).html('<a href="#">After</a>');},
function () {
    $(this).html('<a href="#">Before</a>');
});
});
Run Code Online (Sandbox Code Playgroud)

cur*_*ode 19

Blender有适当的答案,但我们也可以将你的问题概括为一个简单的jQuery插件:

$.fn.toggleText = function(t1, t2){
  if (this.text() == t1) this.text(t2);
  else                   this.text(t1);
  return this;
};
Run Code Online (Sandbox Code Playgroud)

您的代码将如下所示:

$('#showMore').click(function(){
  $(this).toggleText('Before', 'After');
})
Run Code Online (Sandbox Code Playgroud)

  • 根据 OP 尝试做的事情的意图,这应该是公认的答案。(对不起,拖了一个 2 岁的帖子) (2认同)

小智 16

点击后切换的简单解决方案:

$('#showMore').on('click', function(){
    $(this).html() == "after" ? $(this).html('before') : $(this).html('after');
});
Run Code Online (Sandbox Code Playgroud)


Ble*_*der 15

不知道JsFiddle.net有什么用,但我不能发布一个演示.

你将两个函数嵌套在彼此(.click().toggle())中,并.toggle()处理一个click,这可能会导致冲突.另外,使用text()而不是html():

HTML:

<a href="#" id="showMore">Before</a>
Run Code Online (Sandbox Code Playgroud)

JavaScript:

$('#showMore').toggle(function() {
    $(this).text('Before');
}, function() {
    $(this).text('After');
});
Run Code Online (Sandbox Code Playgroud)

  • "此方法签名在jQuery 1.8中已弃用,并在jQuery 1.9中删除." https://api.jquery.com/toggle-event/它现在所做的只是为点击的对象设置动画. (6认同)

小智 5

这是此处相同答案的简化版本/“更紧凑”版本:“单击后切换的简单解决方案”

$('#showMore').on('click', function(){
    $(this).html($(this).html() == 'after' ? 'before' : 'after');
});
Run Code Online (Sandbox Code Playgroud)

当然,这需要jQuery插件才能起作用。