jquery返回对象的函数

时间:2013-05-14 19:42:17

标签: jquery

我有这个函数,它应该在找到它时返回一个对象,但它没有这样做。 我做错了什么?

var getEl = function(title){
    var theInputs = $('input[type=text], input[type=radio], input[type=checkbox], select, textarea')
    theInputs.each(function(){
        if (this.title==title){
            getEl = this
            console.log('found it!')
        }
    })
}

console.log(getEl('Office Status'))

我知道它有效,因为发现它是在控制台上输出的,但是控制台报告未定义为此行的输出:

console.log(getEl('Office Status'))

2 个答案:

答案 0 :(得分:2)

var getEl = function(title){
    var result;
    var theInputs = $('input[type=text], input[type=radio], input[type=checkbox], select, textarea')

    theInputs.each(function(){
        if (this.title==title){
            result = this
            console.log('found it!')
            return false; // break the loop
        }
    });

    return result;
}

覆盖函数变量的值将不起作用。您想要返回结果。

修改

话虽这么说,你应该能够用这个替换整个事情:

var $result = $(":input[title='" + title + "']");

if(result.length > 0) return $result[0];

虽然如果你需要专门只获得这3种类型的输入而不是任何输入,它需要进行一些修改。这样的事情(使用现有的theInputs变量):

var $result = theInputs.filter("[title='" + title + "']");

答案 1 :(得分:1)

您需要从函数中返回元素

var getEl = function(title){
    var el;
    var theInputs = $('input[type=text], input[type=radio], input[type=checkbox], select, textarea')
    theInputs.each(function(){
        if (this.title == title){
            el = this;
            return false;
        }
    })
   return el;
}