Jquery fn.extend无法从中获取选择器

Jquery fn.extend无法从中获取选择器,jquery,Jquery,我有这样一个fn.extend函数 $.fn.extend({ sval: function(){ var val = $(this).text(); if(val == '' || val == undefined) $(this).val(); var elem = $(this).children().first(); if (val == '' || val == undefined) val = $(elem).t

我有这样一个fn.extend函数

$.fn.extend({
    sval: function(){
        var val = $(this).text();
        if(val == '' || val == undefined) $(this).val();
        var elem = $(this).children().first();
        if (val == '' || val == undefined) val = $(elem).text();
        if (val == '' || val == undefined) val = $(elem).val();   
        return val;
    }
});
这是我的第一个扩展函数,我正在使用它来尝试获取对象的文本,无论它是input、span、p还是其他带有文本的对象

这在两个不同的函数中都起作用,比如这个函数

function rowObj(item, pre){
//check if this is a tr
var tag = item.tagName;
var row = item;
if(pre == undefined){
    pre = '';
}
if(tag != 'TR'){
    row = $(item).closest('tr');
}
var obj = {};
$(row).find('.rowcell').each(function(){
    var keystr = $(this).attr('class');
    var keyarr = keystr.split(" ");
    var key = keyarr[0];
    obj[pre+key] = $(this).sval();
});
return obj;
}

很抱歉,我的缩进副本和过去是不保留它,但无论如何,这是工作我的扩展到它的孩子,并获得值 这就是让我困惑的地方 如果我尝试在对象上使用sval(),我需要的是来自它的值,而不是它的父对象的值,它返回时没有值。当我尝试在sval中console.log(这个)时,我得到

console.log(val)
//$('.invsearch').sval()
[prevObject: m.fn.init[1], context: document, selector: ".invsearch", jquery: "1.11.1", constructor: function…]

//$(item).sval(); --- item is from <input class="invsearch" oninput="searchinv(this)"/>
[prevObject: m.fn.init[1], context: document, selector: "", jquery: "1.11.1", constructor: function…]
console.log(val)
//$('.invsearch').sval()
[prevObject:m.fn.init[1],上下文:文档,选择器:“.invsearch”,jquery:“1.11.1”,构造函数:函数…]
//$(item.sval();--项目来自
[prevObject:m.fn.init[1],上下文:文档,选择器:”,jquery:“1.11.1”,构造函数:函数…]

在这两种情况下,从sval内部对“this”使用.val()都不起作用,我确信这很简单,我做错了什么

您实际上没有使用调用它的输入值:

if(val == '' || val == undefined) $(this).val();
如果我们对此进行重新格式化(讨厌一行程序的原因之一;很容易隐藏bug):

您实际上没有使用该值,所以
val
仍然为空,我们将搜索子对象的值

尝试:


谢谢你,我完全错过了lol,我昨晚一直盯着这个问题,这让我不知所措,我会在时间期限到期后将你的答案标记为正确答案…(为什么我必须等待多长时间才能接受答案)这里讨论(不支持规则,只是注意讨论):
if (val == '' || val == undefined) 
  $(this).val();
if (val == '' || val == undefined) 
  val = $(this).val();