1

次の HTML から、with jQuery 内のテキストを取得したいが<label></label>、ラベル内のスパン内のテキストは除外します。

<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

効率的な方法:どこ でも行う必要がなく、何度でも呼び出すことができる を作成します
fncloneremove

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 に答える