jquery 从数组中获取属性值
jquery get attr value from array
var t=new Array('title','placeholder','alt');
$.each(t,function(k,v){
alert(typeof $(this).attr(v));//PROBLEM $(this) is not the right object
});
目标: 获取存在的属性(标题或占位符或替代)值。
如果元素有标题,则 return 标题,如果没有,检查占位符,然后检查 alt。
例如:
>> var v='title';
>> $(this).attr(v);
>> $(this).attr('title');(I want this)
旧解决方案:
for(var i=0;i<t.length;i++){
alert($(this).attr(t[i]));
}
真正的解决方案:(感谢 mplungjan)
var o=$(this);
$.each(t,function(k,v){
alert(typeof o.attr(v));//PROBLEM $(this) is not the right object
});
试试这个..
$.each() 函数与 $(selector).each() 不同,后者用于对 jQuery 对象进行排他性迭代。 $.each() 函数可用于迭代任何集合,无论它是对象还是数组。在数组的情况下,回调每次都会传递一个数组索引和一个对应的数组值。 (该值也可以通过 this 关键字访问,但是 Javascript 总是将 this 值包装为一个对象,即使它是一个简单的字符串或数字值。)方法 returns 它的第一个参数,迭代的对象。
$.each([ 52, 97 ], function( index, value ) {
alert( index + ": " + value );
});
http://api.jquery.com/jquery.each/
您的代码:
var t=new Array('title','placeholder','alt');
$.each(t,function(k,v){
alert("key:"+k+"value:"+v);
});
这就是我认为您正在尝试做的事情。
单击该字段并在控制台中查看
$(function() {
var t=['title','placeholder','alt'];
$("input").on("focus",function() { // we need an event
var inp = $(this); // the input as a jQuery object
$.each(t,function(_,key) { // in here, $(this) is NOT the input
console.log(key+":"+inp.prop(key)); // we use prop instead of attr
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="inp1" type="text" title="Some input field" placeholder="Enter some text" />
var t=new Array('title','placeholder','alt');
$.each(t,function(k,v){
alert(typeof $(this).attr(v));//PROBLEM $(this) is not the right object
});
目标: 获取存在的属性(标题或占位符或替代)值。
如果元素有标题,则 return 标题,如果没有,检查占位符,然后检查 alt。
例如:
>> var v='title';
>> $(this).attr(v);
>> $(this).attr('title');(I want this)
旧解决方案:
for(var i=0;i<t.length;i++){
alert($(this).attr(t[i]));
}
真正的解决方案:(感谢 mplungjan)
var o=$(this);
$.each(t,function(k,v){
alert(typeof o.attr(v));//PROBLEM $(this) is not the right object
});
试试这个..
$.each() 函数与 $(selector).each() 不同,后者用于对 jQuery 对象进行排他性迭代。 $.each() 函数可用于迭代任何集合,无论它是对象还是数组。在数组的情况下,回调每次都会传递一个数组索引和一个对应的数组值。 (该值也可以通过 this 关键字访问,但是 Javascript 总是将 this 值包装为一个对象,即使它是一个简单的字符串或数字值。)方法 returns 它的第一个参数,迭代的对象。
$.each([ 52, 97 ], function( index, value ) {
alert( index + ": " + value );
});
http://api.jquery.com/jquery.each/
您的代码:
var t=new Array('title','placeholder','alt');
$.each(t,function(k,v){
alert("key:"+k+"value:"+v);
});
这就是我认为您正在尝试做的事情。
单击该字段并在控制台中查看
$(function() {
var t=['title','placeholder','alt'];
$("input").on("focus",function() { // we need an event
var inp = $(this); // the input as a jQuery object
$.each(t,function(_,key) { // in here, $(this) is NOT the input
console.log(key+":"+inp.prop(key)); // we use prop instead of attr
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="inp1" type="text" title="Some input field" placeholder="Enter some text" />