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);
    });

演示:http://jsfiddle.net/so2pp1tp/

这就是我认为您正在尝试做的事情。

单击该字段并在控制台中查看

$(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" />