jquery从数组中获取attr值

时间:2015-08-08 04:38:42

标签: jquery each attr

var t=new Array('title','placeholder','alt');

$.each(t,function(k,v){
    alert(typeof $(this).attr(v));//PROBLEM $(this) is not the right object
});

目标:获取存在的属性(标题或占位符或替代)值。

如果元素有标题,则返回标题,如果没有,请检查占位符,然后选择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
});

2 个答案:

答案 0 :(得分:2)

以下是我认为你要做的事情。

单击该字段并查看控制台

&#13;
&#13;
$(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
    });
  });  
});
&#13;
<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" />
&#13;
&#13;
&#13;

答案 1 :(得分:1)

试试这个..

$ .each()函数与$(selector).each()不同,后者用于独占于jQuery对象进行迭代。 $ .each()函数可用于迭代任何集合,无论它是对象还是数组。在数组的情况下,回调每次都传递一个数组索引和相应的数组值。 (也可以通过this关键字访问该值,但Javascript将始终将此值包装为Object,即使它是一个简单的字符串或数字值。)该方法返回其第一个参数,即迭代的对象。

$.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/