2017-05-04 27 views
-2

我有几个输入,我想用.on("change")来处理更改事件。我已经把输入在一个变量数组这样的:如何获取已更改输入的属性?

$(document).on("change keyup", [ 
    input1, 
    input2, 
    input3 
], function() { 
    // doing stuff 
}); 

每个变量都有分配给它的这样的jQuery选择:

var input1 = $("input[name=input1]"); 
var input2 = $("input[name=input2]"); 
var input3 = $("input[name=input3]"); 

每个输入具有欲数据属性当输入改变时从this上下文获得。例如,如果输入1已经改变,我想它的数据属性的方式如下:

this.data("someAttribute") 

但我怕this不选择从.on()功能,但与最初的$(document)选择和我工作实际上是试图从document中获取数据属性,而不是改变的输入,这不是我所需要的。

注意:随着我想要做的,选择多个输入像这样$(input1, input2, input3)不适用于我的情况。

+2

第二个属性必须是一个字符串选择,不一个对象数组:http://api.jquery.com/on/我建议在所有'输入'元素上放置一个普通的类,并通过它来代替'name'属性来选择 –

+0

什么是标记投入看起来像? –

回答

1

而不是将需要绑定到数组中的输入和将数组传递给.on()方法(这是不允许的),您应该将input元素置于一个常见的CSS类中,然后编写事件绑定像这样:

$(document).on("change keyup", ".theClass", function() { 
    // doing stuff 
}); 

然后,事件处理程序中,你需要通过this像这样的jQuery函数:$(this).data()因为.data()是一个jQuery方法,将无法使用本机的DOM元素上仅指this

下面是一个例子:

$(document).on("change keyup", ".input", function() { 
 
    console.log($(this).data("test")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' name='input1' class="input" data-test='one'> 
 
<input type='text' name='input2' class="input" data-test='two'> 
 
<input type='text' name='input3' class="input" data-test='three'>

+0

这适用于我!谢谢! ;) – Eseth

0

给所有输入的CSS类

$('.change').on('change keyup', function() { 
 
     console.log($(this).val()); 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="change"> 
 
<input type="text" class="change"> 
 
<input type="text" class="change">