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
});
答案 0 :(得分:2)
以下是我认为你要做的事情。
单击该字段并查看控制台
$(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;
答案 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);
});