Jquery fn.extend无法从中获取选择器
我有这样一个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({
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();