3

jqueryで要素名を取得しようとしています-

次のサンプルコードを確認してください:(またはhttp://jsbin.com/usujeq/2/watch

<div name = "foo1">
  <div name = "foo2">
    <div name = "foo3">
      <div name = "foo4">
        <button id = "clickme" type="button">
</div></div></div></div>

<script type="text/javascript">
$('#clickme').click( function() {
  $(this).parents().each( function() {
     console.log($(this).prop('name'));
  });
});
</script>

をクリックするとclickme、DOM全体に移動して名前をログに記録する必要があります。<div name="foo4"><html>

期待される結果は次のとおりです。

foo4
foo3
foo2
foo1
undefined
undefined

prop('name')undefinedを返しattr('name')、期待される名前を付けます。prop('name')上記のコードの何が問題になっていますか?

4

2 に答える 2

11

ここでの主な問題は、div要素にデフォルトで属性がないことだと思いnameます(グローバル属性を参照)。要素に対して元のJavaScriptコードを実行する場合、要素には属性がinputあるため、おそらく機能します。inputname

jQueryの.attr()メソッドは、非標準の属性でも解析できます()。

jQueryのメソッドは、主にや.prop()などのプロパティに使用されるため、どのような場合でも、使用することがおそらく最善のアクションです。checkeddisabled.attr()

于 2013-02-18T23:03:26.763 に答える
5

たとえば、入力要素にはnameプロパティがあります。divプロパティnameはありません。これは、の固有のプロパティではないためですdiv。私は違いを説明するために一緒にフィドルを投げました。http://jsfiddle.net/c7qDC/

を追加するname="foo1"と、要素に追加の属性が設定されます。一方、anには。という名前inputの固有のプロパティnameがあります。

それらが持つプロパティについては、入力要素に関するドキュメントを参照してください

そしてそれをdivのドキュメントと比較してください。

「財産」を強調してごめんなさい。プロパティと属性の違いを指摘しようとしています。プロパティは要素タイプに固有ですが、要素に追加の属性を設定できます。

于 2013-02-18T23:03:45.640 に答える