如何在JQuery中更改按钮文本

sbr*_*bru 13 javascript jquery jquery-ui button jquery-autocomplete

到目前为止我有这个工作代码:

小提琴:http://jsfiddle.net/r4emt/12/

在您进入JQuery UI自动完成之前,该按钮显示为"Hello".您可以在JQuery UI自动完成中键入"item",您会注意到该按钮现在显示为"World".单击"世界"按钮将项目放入列表中.如果再次键入项目,则可以选择一个项目,然后单击列表中已有项目的替换按钮.但是,一旦你这样做,按钮仍然会显示"世界",但它应该说"你好",因为输入字段中没有任何内容.如果你点击输入字段,然后点击删除或后退箭头它会改回"你好",但没有任何东西可以删除或转到左边.我认为这与代码的这一部分有关:

$('#inputWrapper').on('keyup', '#tags', function() {
    if($(this).val() == '') {
        $('button.addButton').text('Hello');
    } else {
        $('button.addButton').text('World');
    }
});
Run Code Online (Sandbox Code Playgroud)

特别是'keyup'部分.所以我的问题是如何解决这个问题,这样每当输入框为空时,按钮总是显示"hello",当字段中有输入时,按钮显示为"world"?谢谢!

小智 23

是工作小提琴.所做的更改是:

$('#tags').keyup( function() {
    if($(this).val() == '') {
        $('button.addButton').text('Hello');
    } else {
        $('button.addButton').text('World');        
    }
});
Run Code Online (Sandbox Code Playgroud)

并在按钮结束时单击:

$('#tags').val('');
$('#tags').keyup();
Run Code Online (Sandbox Code Playgroud)


Use*_*er2 9

我知道这是一个很长的死线程,但我需要添加它,因为我只花了2天时间追踪内存泄漏(由我使用此页面中的代码引起).

重要提示:不要在按钮元素上使用jQuerys text()!

该函数在DOM中创建了一些无法通过empty()删除的内容.如果你在很长一段时间内多次调用该函数,你的DOM中就会堆积大量的垃圾,导致东西破裂.

请参阅jQuery API文档.

(找不到它在文档中提到的确切位置,但它在某处,我现在必须为我的火车运行)...

  • 说实话,听起来不值得信赖.[这里](http://stackoverflow.com/a/16405533/33080)描述了一个潜在的泄漏,但像"不使用text()"这样的声明没有任何解释是非常不具体的. (3认同)