1

从下面的 HTML 中,我想<label></label>用 jQuery 获取文本,但排除标签中跨度内的文本。

<label for="name">Name<span class="required">Required</span></label>
<input type="text" class="requiredField" name="name" />

我正在尝试以下操作:

jQuery('.requiredField').each(function() {  
    var labelText = jQuery(this).prev().text();
}

它也接收跨度内的文本.required(即NameRequired),但我只想获得“名称”。我怎样才能排除它?谢谢。

4

2 回答 2

2

一种有效的方法:
创建一个您可以一次又一次地调用的方法,而fn不必在任何地方都做: cloneremove

jQuery.fn.onlyText = function() {
    return this
            .clone()
            .children()
            .remove()
            .end()
            .text();
};

// And then your code

jQuery('.requiredField').each(function() {  
    var labelText = jQuery(this).prev().onlyText();
});

http://jsfiddle.net/OMS_/x7xPB/

于 2012-12-30T21:52:26.173 回答
1

这应该有效:

jQuery('.requiredField').each(function() {  
    labelTextCopy = jQuery(this).prev().clone();
    copyChild = labelTextCopy.children();
    copyChild.remove();
    console.log(labelTextCopy.text());
})​

JSFiddle:http: //jsfiddle.net/5xRLg/5/

于 2012-12-30T21:27:34.950 回答