我在页面上的各个元素中添加了一个.listen类,可以是一个按钮,可以是输入,div,span等。
$('.listen').on('click', this._init.bind(this));
在方法中,我希望替换单击元素中的文本。
p._init = function(e){
$(e.currentTarget).val('new data');
};
以上适用于输入元素,但不适用于div之类的内容。有没有办法改变任何类型元素的数据,还是我必须使用开关来测试变化?
答案 0 :(得分:1)
你可能会有点花哨并检查元素是否具有value
属性,并根据类似
p._init = function(e){
$(e.currentTarget)['value' in e.currentTarget ? 'val' : 'text']('new data');
};
除非您将值属性添加到本身没有值属性的元素,否则这应该有效。
答案 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);
});