7

#content私は単にdiv内の要素を操作したいだけですが、$('#content')うまくいかないようですが、他の場所ではうまくいきます! 関連するコードは非常に単純です。

HTML

<body>
  <input type='button' value='Save design' id='save'  />
  <div id="content" style="height: 200px; width:600px;border: 1px solid black;" class='whatev'></div>
</body>

脚本

$(document).ready(function(){   
   $('#save').click(function(e){
     alert( document.getElementById('content').id); // this works!
     alert($("#content").length); // this works! it outputs "1"
     alert($("#content").id); // this does NOT work - undefined, why?
     //end save function
   });

    $('#content').click(function(e){ 
       // do stuff // ALL of this works!
    });
});

それだ。お気づきの場合は、一部の場所では機能しますが (それにバインドされたクリック関数全体は完全に問題ありません)、機能しない場所でも奇妙なことにまだ存在しlength = 1ます。念のため、(を使用して$('#content','body'))コンテキストを使用してdivを検索しようとしましたが、使用しませんでした。

4

8 に答える 8

16

DOM要素とDOM要素を含むjQuery選択には違いがあります。jQueryの選択は、使いやすくするためのDOMオブジェクトのラッパーです。プロパティはありませんidが、DOM要素にはあります。一方、jQueryは、次のattrメソッドを使用して要素のプロパティにアクセスする方法を提供します。

document.getElementById('content').id // access the id property of a DOM element
$('#content').attr('id')              // use jQuery to select the element and access the property

ただし、プロパティはjQueryのlength選択によって提供されるため、これで問題なく機能します。

于 2012-08-28T11:41:03.260 に答える
10

idプレーン DOM プロパティ/属性であり、jQuery オブジェクトではなくプレーン DOM オブジェクトで動作します。

jQuery でこれを行います。

$("#content").attr('id');

等しい:

document.getElementById('content').id

また

$("#content")[0].id; //[0] gets the first DOM object in the collection
于 2012-08-28T11:39:44.430 に答える
3

$("#content")idを持つelmenentを含むjQueryコレクションを返しますcontentidコレクションのプロパティではなく、要素の属性です。attr()コレクションからメソッドをチェーンすることで、要素のIDを取得します。

alert($("#content").attr('id'));

または、eachコレクションを実行するときに、渡される関数の内部がeach this実際の要素になるため、アクセスできますthis.id

$("#content").each(function () {alert(this.id);});
于 2012-08-28T11:41:50.053 に答える
3

これを試して

$("#content").attr("id")
于 2012-08-28T11:39:47.883 に答える
2

.attr( "id")関数を使用してidを取得できます。次のコードを使用します: $( "#content")。attr( "id");

于 2012-08-28T12:04:25.610 に答える
2

常に覚えておいてください!

attributejQueryで選択した要素の一部にアクセスしたい場合は、jQuery.attr()API を使用します。

今、あなたはこれを言った、 document.getElementById("content").id作品、この行の同等jQueryのステートメントは

$("#content").attr('id');

属性の選択に使用.attr() スタイル/cssの操作に使用.css()

を使用して、選択した要素の CSS プロパティを変更することもできます.attr()

お気に入り.attr('style','your new style');

于 2012-08-28T11:48:31.267 に答える
2

この質問については、jsfiddle に直接アクセスし、html 要素の属性を取得する方法については jquery ドキュメントを参照してください -> http://api.jquery.com/attr/

jQuery セレクター オブジェクト自体には属性がありませんid。関数を使用する必要があり.attr('id')ます。

このjsfiddleでわかるように、私はそれを修正し、他のすべてが機能します: http://jsfiddle.net/AdtrX/1/

于 2012-08-28T11:43:26.303 に答える