1

少し問題があります。フォーム入力のあるコードがありますが、フォーム入力クラスの名前は

text-input small-input

CSSの問題が原因でこれを変更できません。これが問題です。これは、JavaScriptコードにスペースを追加すると、コードが機能しなくなるためです。

Javascriptコード

$(document).ready(function() {
    $('.text-input*small-input').keyup(function() {
        var search_term = $(this) .val();
        $.post('search.php', {search_term:search_term}, function(data) {
            $('.result').html(data);

            $('.result li').click(function() {
                var result_value = $(this).text();
                $('.text-input*small-input') .val(result_value);
                $('.result').html(' ');
            });

        });

    });
});

したがって、*記号にはスペースが必要です。これを解決する方法はありますか?ありがとう!

4

2 に答える 2

4

スペースは必要ありません。そこには何も必要ありません。.text-input.small-inputこれらのクラスの両方を持つ要素を探すようにセレクターエンジンに指示するだけです。

これは、複数のパーツセレクターを説明する非常に優れた記事です。

于 2013-03-17T18:30:28.283 に答える
0

2つの問題がありました。スペースは必要ありません。2番目のクラスにはドットが必要です。

CSSセレクターの同じオブジェクトで2つのクラスの要件を指定するには、2つのクラス名の間にスペースを入れないでください。

$('.text-input.small-input')    // find single object with both classes on it

スペースがあると、それは何か違うことをします:

$('.text-input .small-input')    // find .small-input with ancestor .text-input

それらの間にスペースを入れると、一致するオブジェクトと一致.text-inputする子を見つけるセレクターが作成さ.small-inputれ、一致したオブジェクトが子になります。それらの間にスペースがないということは、両方のクラスが同じオブジェクト上になければならないことを意味します。これはCSS仕様の仕組みであり、jQuery固有ではありません。


参考までに、これで何をしようとしていたか:

$('.text-input small-input')  // find <small-input> with ancestor that is .text-input

の前に特殊文字がないため、タグ名として解釈されたため<small-input>、の祖先を持つタグを持つオブジェクトを検索しようとしていました。.text-inputsmall-input

于 2013-03-17T18:33:38.303 に答える