-1
<select name="productsize" id="productsize">
    <option value="">1</option>
    <option value="">xxx</option>
</select>

オプションの1つとして「xxx」が含まれている場合、jQueryでこのSELECTリストを非表示にする方法は?

出来ますか?

アップデート:

上記は単なる例であり、ROB はそれに答えており、実際に機能しています。しかし、私の状況では、この選択リストはまず別の jquery 関数によって生成されます。

これです:

<script type="text/javascript"><!--
function GetAvailProductSizes() {
    $('select#productsize option').remove();
    $('select#productsize').append('<option value=""><? echo $langdata['oneprodpage_selectsize']; ?>...</option>');

    var color = $('#productcolor').val();
    if (color > 0) {
        var availsizes;
        var http_request = new XMLHttpRequest();
        http_request.open( "GET", '<? echo ROOT; ?>/autocompleteavailsizes/?productid=<? echo $thisproduct['id']; ?>&color=' + color, true );
        http_request.send(null);
        http_request.onreadystatechange = function () {
            if ( http_request.readyState == 4 ) {
                if ( http_request.status == 200 ) {
                    availsizes = eval( "(" + http_request.responseText + ")" );
                    $('select#productsize').show();

                    for (var i = 0; i < availsizes.length; i++) {
                        $('select#productsize').append('<option value="' + availsizes[i].id + '">' + availsizes[i].name + '</option>');
                    };
                } else {
                    alert( "There was a problem with the URL." );
                }
                http_request = null;
            }
        };
    };
}

//-->

私はこれを試しました:

<script type="text/javascript"><!--
function GetAvailProductSizes() {
    $('select#productsize option').remove();
    $('select#productsize').append('<option value=""><? echo $langdata['oneprodpage_selectsize']; ?>...</option>');

    var color = $('#productcolor').val();
    if (color > 0) {
        var availsizes;
        var http_request = new XMLHttpRequest();
        http_request.open( "GET", '<? echo ROOT; ?>/autocompleteavailsizes/?productid=<? echo $thisproduct['id']; ?>&color=' + color, true );
        http_request.send(null);
        http_request.onreadystatechange = function () {
            if ( http_request.readyState == 4 ) {
                if ( http_request.status == 200 ) {
                    availsizes = eval( "(" + http_request.responseText + ")" );
                    $('select#productsize').show();
                    $('select#productsize option').each(function() {
                        if ($(this).text() == '-') {
                            $('select#productsize').hide();
                        }
                    });
                    for (var i = 0; i < availsizes.length; i++) {
                        $('select#productsize').append('<option value="' + availsizes[i].id + '">' + availsizes[i].name + '</option>');
                    };
                } else {
                    alert( "There was a problem with the URL." );
                }
                http_request = null;
            }
        };
    };
}

//-->

しかし、それは機能していません...

そうそう、私の選択リストにはスタイル表示があります:なし

4

3 に答える 3

2
$('select:has(option:contains("xxx"))').hide();

または:

$('#productsize option').filter(function(){
   var t = this.textContent || this.innerText;
   return t === 'xxx'; 
}).parent().hide();

http://jsfiddle.net/Vz7gY/

于 2013-01-19T00:05:00.277 に答える
2

かなりまっすぐ...

$('#productsize option').each(function() {
    if ($(this).text() == 'xxx') {
        $('#productsize').hide();
    }
});

http://jsfiddle.net/uRAsu/

于 2013-01-19T00:02:07.530 に答える
1

ロブの答えに代わるものは、このセレクターから選択された要素の数を確認することです。

if($('#productsize option[value="xxx"]').length) {
    $('#productsize').hide();
}

これは、内部テキストではなく、各オプションの値属性を設定することを前提としています。

于 2013-01-19T00:08:12.773 に答える