在我的页面中,我想获得div或文本框的值。
在两种不同的条件下,他可以是div和textbox,这是肯定的
当我确定它只是div或文本框但不确定它是div还是文本框时,我怎么能得到div或textbox的值。
任何方法都可以帮助我获得价值,即使他是div或文本框。
答案 0 :(得分:2)
var $el = $('#element'),
value = $el.val() || $el.text();
如果未定义.val(),则第二行将使用.text()。
答案 1 :(得分:1)
One solution将使用.is(':text')
filter + selector:
var elm = $('divOrInput'),
text = '';
if (elm.is(':text')) {
text = elm.val();
} else {
text = elm.text();
}
或者,浓缩:
var elm = $('divOrInput');
var text = elm.is(':text') ? elm.val() : elm.text();
修改强>
我的previous "solution" 没有工作!或者,它确实如此,但那是因为.text()
也适用于<textarea>
。 如果 OP正在讨论<textarea>
,请在两者上使用.text()
。另一方面,如果OP正在谈论<input type="text" ... />
与<div>
,则可以使用此处提供的解决方案。
答案 2 :(得分:0)
html
函数适用于textareas和div:
<div id="myDiv">some text</div>
<textarea id="myTextarea">some more text</textarea>
$('#myDiv').html(); // works
$('#myTextarea').html(); // works
这意味着您可以在不知道元素属于哪种元素的情况下使用.html()
。
修改强>
如果您的意思是input
或div
,则可以使用nodeName
属性:
<div id="textbox">some text</div>
<input type="text" id="textbox" value="some more text">
这个jQuery将为您提供以下结果:
var $el = $('#textbox'),
content;
content = ($el[0].nodeName.toLowerCase() == 'div') ? $el.html() : $el.val();
答案 3 :(得分:0)
检查tagName。 HTML:
<div class="foo">This is div content.</div>
<textarea class="foo">This is textarea content.</textarea>
JavaScript的:
console.log( $('.foo:first')[0].tagName.toLowerCase() );
console.log( $('.foo:last')[0].tagName.toLowerCase() );
这是jsfiddle。
我一直在弄乱小提琴,结果是this:
$.fn.footext = function() {
var tagName = $(this)[0].tagName.toLowerCase();
if (tagName == 'div') {
return $(this).text();
} else if (tagName == 'textarea') {
return $(this).val();
} else {
return null;
}
};
console.log($('.foo:first').footext());
console.log($('.foo:last').footext());