2

私はこのプレーンなjsを持っています:

var innerText  = document.getElementById("TaskId").options[0].text;

そして、私はそれをjQueryに変換する方法を考えていました:

var innerS = $("#TaskId");
var innerText = innerS.options[0].text;

これはエラーをスローします:

innerS.options is undefined

編集

いくつかの議論に従って、私は一緒にクイックスピードテストを投げました:

js:

var startDat = Date.now();
for (var c = 0; c < 100000; c++) {
    var com = $("#TaskId").get(0);
}
var endDat = Date.now();
alert("jQ.get(0) took " + (endDat - startDat) + "ms");


var startD = Date.now();
for (var co = 0; co < 100000; co++) {
    var com = $("#TaskId")[0];
}
var endD = Date.now();
alert("jQ[0] took " + (endD - startD) + "ms");

var startDa = Date.now();
for (var comp = 0; comp < 100000; comp++) {
    var compa = document.getElementById("TaskId");
}
var endDa = Date.now();
alert("js took " + (endDa - startDa) + "ms");

結果:

jQ.get(0) took 1042ms
jQ[0] took 1057ms
js took 136ms
4

3 に答える 3

4

jQueryオブジェクトには、DOM要素の配列が含まれています。DOM要素に直接アクセスする場合は、その直接アクセスを取得する方法がいくつかあります。たとえば、次の方法で最初のDOM要素を直接取得できます。

var innerS = $("#TaskId").get(0);

これinnerSが実際のDOM要素であり、jQueryオブジェクトではありません。

実行時間を最速にするには、次を使用します。

var innerS = document.getElementById("TaskId");

jQueryはコーディングが高速ですが、jQueryオブジェクトにはオーバーヘッドがかかるため(オブジェクトの構築、DOM要素の並べ替えなど)、実行時間が常に最速であるとは限りません。

DOM配列全体を次のように取得できます。

var optionElements = $("option").get();

もちろん、jQueryオブジェクトを使用する理由の1つは、クロスブラウザーメソッドのセットがあり、場合によっては直接DOMメソッドの代わりにメソッドを簡単に使用できることです。特定のケースでは、次のようにinnerTextを取得できます。

var text = $("#TaskId").text();
于 2012-05-01T23:07:37.233 に答える
3

jQueryオブジェクトは基本的にDOM要素の単なるラッパーであるため、DOM要素自体にアクセスするには、.get(0)または[0]のいずれかを使用できます。

$('#TaskId').get(0).options[0].text;

// OR

$('#TaskId')[0].options[0].text;
于 2012-05-01T23:14:37.863 に答える
2

2つの可能な解決策:

var innerText = innerS[0].options[0].text; 
// Are you sure about .text? I never used it.

また

var innerText = $("#TaskId option:first").text();
于 2012-05-01T23:06:08.530 に答える