有没有办法在运行时确定元素是否返回element.text()的值?使用javascript还是jquery?
即。检查元素是纯文本的某种方式,还是某种其他类型的元素?
为什么我需要解决上述问题---
我试图解析一些具有完全不同编码风格的复杂形式(例如,单选按钮元素的文本值可以包含在标签标签中,或者可以直接给出,或者它们可以用span标签括起来,依此类推......)
所以我需要用表单id解析表单作为包装器,
现在,如果单选按钮的文本值包含在span中,当前所选元素是单选按钮,那么下一个元素将是span标记(开放),我想对此不做任何操作并继续前进。之后的那个将是文本,我想使用this.text()获得。
因此整个问题......
答案 0 :(得分:1)
您可以使用nodeType
检查元素是否为纯文本(在这种情况下,其值为3)
<div id="wrapper"><input type='radio' />some text here</div>
$('#wrapper').contents().each(function()
{
alert(this.nodeType);
});
它将警告1(输入)和3(文本)。对于type = 3,您可以使用text()
获取文本值
注意 - 它还会考虑空格(作为文本节点)。
答案 1 :(得分:1)
var attr = $(this).attr('name');
// For some browsers, `attr` is undefined; for others,
// `attr` is false. Check for both.
if (typeof attr !== 'undefined' && attr !== false) {
// ...
}
另一种检查方式:
if( typeof( $(this).attr('name') ) != 'undefined' ) { // ... }
你可以创建自己的jQuery扩展方法:
$.fn.hasAttr = function(name) {
return this.attr(name) !== undefined;
};
$(document).ready(function() {
if($('.edit').hasAttr('id')) {
alert('true');
} else {
alert('false');
}
});
<div class="edit" id="div_1">Test field</div>
答案 2 :(得分:0)
嗨,你可以检查元素的类型如下
<form >
<input type="text" id="a" value="abc"/>
</form>
<script>
var type = document.forms[0].elements[0].type;
alert(type);
</script>