0

以下は、jQueryを使用して入力要素を取得するコードです。

var txt = $(tableRow).find('input:text');
if (txt.value == null) {
  //TO DO code
}

これが純粋なJavaScriptでそれを行う方法です

var txt = document.getElementById('txtAge');
if (txt.value == null) {
  //TO DO code
}

最初の方法では、txtの値は未定義です。しかし、2番目の方法では、値は入力要素の内部にあるものです。さらに興味深いのは、Mozilla Firebugの右下のペインで、txtの「値」までスクロールダウンすると、両方の方法でそこに表示されることです。

簡単に言うこと$(txt).val()ができますが、jQueryによって選択された要素の値にアクセスできない理由も理解したいと思います。jQueryは単なるJavaScript関数のライブラリではありませんか?

4

4 に答える 4

6

.valuejquery API の一部ではありません。.val()代わりに次を使用する必要があります。

var txt = $(tableRow).find('input:text');
if (txt.val() == "") {
  //TO DO code
}

dom オブジェクトと jquery dom オブジェクトはまったく同じではありません。実際、開発者ツール (webkit 内) または Firebug (Firefox) を開いて、その中身を確認できます。Jquery はより多くの情報を保持します (実際には、それが表す dom のインスタンスが含まれています)。したがって、 を使用したい場合.valueは、jquery オブジェクトから「一般的な」dom オブジェクトを呼び出してから を使用する必要があります.value

于 2012-11-26T08:40:26.000 に答える
2

jQuery は、さまざまなネイティブおよび非ネイティブの手法を使用して DOM 要素を選択し、それらすべてを独自の API でラップする独自の配列のようなインスタンスに配置します。jQuery は、ネイティブ DOM プロパティまたはメソッドを「拡張」しないため、そのためには DOM ノードをターゲットにする必要があります。

次のように考えてください。

var node = document.getElementById('txtAge'); // the DOM node
var txt = $('#txtAge'); // the same node wrapped in a jQuery object/API

jQuery オブジェクトは DOM ノードの配列のようなコレクションを保持するため、次のようにして最初の要素にアクセスできます。

txt[0] // same as node

ただし、通常は次の.get()方法を使用することをお勧めします。

txt.get(0)

必要なことを行うためのもう 1 つの jQuery 方法は、次を使用して jQuery コレクションを反復処理することです.each()

$(tableRow).find('input:text').each(function() {
    // "this" in the each callback is the DOM node
    if ( this.value == null ) {
        // Do something
    }
});
于 2012-11-26T08:43:11.693 に答える
1

.find()arry のようなオブジェクトを返します。クエリに一致する要素が 1 つだけあることが確実な場合は、次のことができます。

var txt = $(tableRow).find('input:text')[0].value;

これはあまり jQuery に似ているわけではありません。いわば、jQuery と DOM の両方のメソッドの不一致に似ていますが、必要なものは得られます。また、DOM の例として示しているのでvar txt = document.getElementById('txtAge');、これは jQuery で次のように書き直すことができます。

var txt = $('#txtAge')[0];

于 2012-11-26T08:49:15.100 に答える
1
var x = $(tableRow).find('input:text');

jquery オブジェクトです。

`x.value` 

jquery object にはプロパティ値がありません。したがって、未定義を返します。

x.val()要素の値を取得するために使用できるメソッドです。

于 2012-11-26T08:44:04.837 に答える