更改输入/ div / span等的内容

时间:2014-07-16 09:30:06

标签: javascript jquery

我在页面上的各个元素中添加了一个.listen类,可以是一个按钮,可以是输入,div,span等。

$('.listen').on('click', this._init.bind(this));

在方法中,我希望替换单击元素中的文本。

p._init = function(e){
    $(e.currentTarget).val('new data');
};

以上适用于输入元素,但不适用于div之类的内容。有没有办法改变任何类型元素的数据,还是我必须使用开关来测试变化?

3 个答案:

答案 0 :(得分:1)

你可能会有点花哨并检查元素是否具有value属性,并根据类似

的方法更改方法
p._init = function(e){
    $(e.currentTarget)['value' in e.currentTarget ? 'val' : 'text']('new data');
};

FIDDLE

除非您将值属性添加到本身没有值属性的元素,否则这应该有效。

答案 1 :(得分:0)

输入它的div()表示div并填充它的text()。

如果你想做一件事,你可以做一些事情:

$('.listen').on(...
{
    if($(this).is('input')) 
    { 
        use val() 
    }
    else
    {
       use text()
    }
}

答案 2 :(得分:0)

试试这个DEMO

    $(document).ready(function(){

     _init = function(e){ 
       if(e.target.nodeName=='SPAN'||e.target.nodeName=='DIV')
           $(this).text('new data');
       else if(e.target.nodeName=='INPUT')
          $(this).val('new data');
      };
   $('.listen').on('click', _init);

 });