5

要素 '' 内にあり、したがってその子である ID '' を持つ要素を見つけようとしています。

$.find メソッドを使用して検索を実行しています。

子オブジェクトが見つかった場合は、いくつかのアクションを実行したいと思います。子オブジェクトが見つからなかった場合は、別のことをしたいと思います。

ただし、そのような子要素が存在しないことはわかっていますが、jQuery.find メソッドは、Watches ウィンドウで調べると、それが何であるかわからないオブジェクトを報告します。

関連するコード スニペットは次のとおりです。

function CreateResourceKeyTextBox(resourceKeyId, editMode) {
    var resourceKeyTableCell = $("#tdKeyResourceKeyId" + resourceKeyId);

    var resourceKeyNameTextBox = null;

    var alreadyExistingResourceKeyNameTextBox = resourceKeyTableCell.find('#txtResourceKeyName' + resourceKeyId);

    if (alreadyExistingResourceKeyNameTextBox != null && typeof alreadyExistingResourceKeyNameTextBox != "undefined") {
        resourceKeyTableCell.html('');
        resourceKeyNameTextBox = alreadyExistingResourceKeyNameTextBox;
        resourceKeyNameTextBox.css('display', 'block');
        resourceKeyNameTextBox.appendTo('#tdKeyResourceKeyId' + resourceKeyId);
        resourceKeyNameTextBox.css('width', '96%');
    }
4

4 に答える 4

9

jQuery クエリ関数は、一致する DOM 要素がない場合でも、常にオブジェクトを返します。

長さを確認してください。0セットに要素がない場合は次のようになります。

if (alreadyExistingResourceKeyNameTextBox.length ...
于 2013-10-07T11:30:44.823 に答える
3

jquery のfindメソッドは、css セレクターに対応する要素が内部で一致する要素である jquery オブジェクトを返します。

css セレクターがどの要素とも一致しない場合、jquery の find メソッドの戻りオブジェクトの内部一致要素は空の配列です。.get次のようにメソッドを使用して、内部で一致する要素を取得できます。

var elems = $.find(css_selector).get()

このメソッドは、jquery オブジェクト インスタンスではなく DOM 要素の配列を返します。次の構文を使用して空の配列を確認できます。

var elems = $.find(css_selector).get()
if(elems.length === 0){
    //array is empty
}else{
    //array is not empty

}

jquery のこの動作により、それ以外の場合に発生する可能性のある構文エラーが最小限に抑えられます。css セレクターが DOM 要素と一致するかどうかに関係なく、jquery はエラーなしで動作します。これはほとんどの場合に有益であり、一致する要素に変更を適用するだけで済みます。このような要素の存在がビジネス ロジックにとって重要な場合は、手動で確認する必要があります。

于 2013-10-07T11:44:34.763 に答える
2

代わりに使うべきだalreadyExistingResourceKeyNameTextBox.length != 0と思います

于 2013-10-07T11:32:13.753 に答える
1

jquery .find() メソッドを使用してオブジェクトが見つからない場合、常に空の配列を返します。それ以外のものを取得している場合は、DOM を確認する必要があります。結果の長さはいつでも確認できます。つまり、result.length > 0 || result.length === 1、必要に応じて

于 2013-10-07T11:32:22.307 に答える