javascript/jquery—如何检查元素是否具有文本属性
是否有某种方法可以在运行时确定元素是否返回element.text()的值?使用javascript还是jquery 也就是说,某种检查元素是纯文本还是其他类型的元素的方法 为什么我需要解决上述问题-- 我试图解析一些具有完全不同编码风格的复杂表单(例如,单选按钮元素的文本值可能包含在标签标签中,或者直接给定,或者包含在跨度标签中,等等……) 所以我需要用表单id作为包装来解析表单 现在,如果单选按钮的文本值包含在span中,并且当前选定的元素是单选按钮,那么下一个元素将是span标记(打开),我不想对其执行任何操作并继续。之后的一个将是文本,我想使用this.text()获得它javascript/jquery—如何检查元素是否具有文本属性,javascript,jquery,Javascript,Jquery,是否有某种方法可以在运行时确定元素是否返回element.text()的值?使用javascript还是jquery 也就是说,某种检查元素是纯文本还是其他类型的元素的方法 为什么我需要解决上述问题-- 我试图解析一些具有完全不同编码风格的复杂表单(例如,单选按钮元素的文本值可能包含在标签标签中,或者直接给定,或者包含在跨度标签中,等等……) 所以我需要用表单id作为包装来解析表单 现在,如果单选按钮的文本值包含在span中,并且当前选定的元素是单选按钮,那么下一个元素将是span标记(打开),
因此,整个问题…您好,您可以检查元素的类型,如下所示
<form >
<input type="text" id="a" value="abc"/>
</form>
<script>
var type = document.forms[0].elements[0].type;
alert(type);
</script>
var type=document.forms[0]。元素[0]。类型;
警报(类型);
您可以使用nodeType
检查元素是否为纯文本(在这种情况下,其值将为3)
这里有一些文本
$('#wrapper').contents().each(function())
{
警报(this.nodeType);
});
它将向1(输入)和3(文本)发出警报。对于type=3,可以使用text()
获取文本值
注意-它还将考虑空格(作为文本节点)
另一种检查方法:
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>
$.fn.hasAttr=函数(名称){
返回此.attr(name)!==未定义;
};
$(文档).ready(函数(){
if($('.edit').hasAttr('id')){
警报(“真”);
}否则{
警报(“假”);
}
});
试验场
我知道这很挑剔,其实javascript根本就不是这样,但在使用javascript时,请确保大括号不要以换行符开头,否则语法就不好。@Vikk-我正试图通过“意大利面”进行解析,但您建议的方法(获取节点类型)在忽略开头后无法拾取文本“意大利面”元素…这是text()命令本身的限制吗?如果指定的元素类型包含文本…(在我的示例中是面食),我只想跳过div/span/label/其他此类元素类型。。。或者我是否必须分别对label/span/div采取不同的方法??谢谢…因为意大利面被包含在span标记中,所以它不再是文本节点。现在是一个跨度标签。请更新您在此处尝试执行的操作-
if( typeof( $(this).attr('name') ) != 'undefined' ) { // ... }
$.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>