jQuery:用不同的按钮显示不同的文本

时间:2014-02-07 19:34:42

标签: jquery button text show

我首先尝试使用此代码。

$(function(){
    $('#k1').click(function(){
        $('#textbox').empty();
        $('#textbox').prepend('hello');
    });
    $('#k2').click(function(){
        $('#textbox').empty();
        $('#textbox').prepend('hola');
    });
    $('#k3').click(function(){
        $('#textbox').empty();
        $('#textbox').prepend('bonjour');
    });
});

但是,我必须只有一个事件处理程序,我很确定上面的代码不算一个。我需要的是三个不同的按钮:每个按钮显示自己的文本,例如: button1:你好 button2:hola button3:bonjour

任何提示?

3 个答案:

答案 0 :(得分:2)

你可以这样做:

<input type="text" />
<button>Hola</button>
<button>Hello</button>
<button>Bonjour</button>

$("button").on("click", function(){
    $("input").val($(this).text());
});

<强> fiddle

在您的点击处理程序中,$(this)将引用被点击以触发事件的元素,因此您只需抓取它的文本或值,或将一些任意文本存储为数据属性

答案 1 :(得分:1)

您可以使用自定义 data- *属性来存储文本。

实施例

HTML

<input type="text" />
<button data-display-text="Hola">k1</button>
<button data-display-text="Hello">k2</button>
<button data-display-text="Bobjour">k3</button>

的JavaScript

$("button").on("click", function(){
    $("input").val($(this).data('display-text'));
});

DEMO

您可以使用.is()

$('#k1, #k2, #k3').click(function(){
    $('#textbox').empty();
    if($(this)is('#k1,'))
        $('#textbox').prepend('hello');
    if($(this)is('#k2,'))
        $('#textbox').prepend('hola');
    if($(this)is('#k3,'))
        $('#textbox').prepend('bonjour');
});

答案 2 :(得分:1)

DEMO

首先给你按钮一个公共类(例如k-button),这样它比列举所有ID更清晰。

然后你可以做类似的事情:

var helloKeyVal = {"k1":"hello","k2":"hola","k3":"bonjour"}

$(".k-button").click(function(){
  $("#textbox").prepend(helloKeyVal[this.id]);
});