javascript / jquery-如何检查元素是否具有文本属性

时间:2011-11-10 06:55:06

标签: javascript jquery

有没有办法在运行时确定元素是否返回element.text()的值?使用javascript还是jquery?

即。检查元素是纯文本的某种方式,还是某种其他类型的元素?

为什么我需要解决上述问题---

我试图解析一些具有完全不同编码风格的复杂形式(例如,单选按钮元素的文本值可以包含在标签标签中,或者可以直接给出,或者它们可以用span标签括起来,依此类推......)

所以我需要用表单id解析表单作为包装器,

现在,如果单选按钮的文本值包含在span中,当前所选元素是单选按钮,那么下一个元素将是span标记(开放),我想对此不做任何操作并继续前进。之后的那个将是文本,我想使用this.text()获得。

因此整个问题......

3 个答案:

答案 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>