2

次の HTML コードがあるとします。

<div>
    Select Gender:
    <input type="radio" />
    Male
    <input type="radio" />
    Female
</div>

私の目標は、男性のラジオ ボタン (最初のボタン) をチェックすることです。ただし、このラジオ ボタンが常に 2 つのラジオ ボタンの最初になるかどうかはわかりません。唯一確かなことは、「男性」テキストの前にラジオ ボタンをチェックしたいということです。

だからこれは私がした方法です:

$('div') 
    .contents()
    .filter(function() {
        return (((this.textContent || this.innerText || $(this).text() || '').search(new RegExp(labels[i], "ig")) >= 0) && (this.nodeType === 3)); 
    })   
    .prev('input[type=radio]')
    .attr('checked', 'checked');

しかし、これはうまくいきません。簡単なデバッグでは、テキスト ノードが正しく選択されていることを示していますが、.prev() 関数は何も返しません。以前の兄弟でも試しましたが、良い結果は得られませんでした。

前もって感謝します !

4

2 に答える 2

2
$('div').contents().filter(function() {
     var tn = this.textContent || this.innerText;
     return $.trim(tn) === 'Male';
}).prev('input[type=radio]').prop('checked', true);

http://jsfiddle.net/FdHAa/

または:

<div>
    Select Gender:
    <input id='male' type="radio" />
    <label for='male'>Male</label>
    <input id='female' type="radio" />
    <label for='female'>Female</label>
</div>

$('div label').filter(function() {
    return $(this).text() === 'Male';
}).prev().prop('checked', true);
于 2012-12-28T21:01:37.880 に答える
0

「男性」テキストの前にあるラジオ ボタンをオンにします。

http://jsfiddle.net/hmariod/ZtuKD/1/

function setM() {
    var inps = document.getElementsByTagName("input");
    for(var i = 0; i < inps.length; i++){
        if(inps[i].type == "radio" ){
            if(inps[i].nextSibling.data.indexOf("Male") > -1){
                inps[i].setAttribute("checked","checked");
            }
        }
    }
}
于 2012-12-28T21:56:21.823 に答える