bugfix> javascript > 投稿
angular.module('todomvc')
.directive('todoFocus', function ($timeout) {
    'use strict';
    return function (scope, elem, attrs) {
        scope.$watch(attrs.todoFocus, function () {
                $timeout(function () {
                    elem[0].focus();
                }, 0, false);
        });
    };
});

私は最近、JSサンプルコード(angularJS)のカスタムディレクティブを分析していましたが、この行に出くわしてイライラしました。

elem[0].focus();

elem [0] .focus();を変更しようとしたとき。 to elem.focus();ディレクティブ全体が機能しません。ただし、elem.bind( 'keydown'、someFunction(){});を含むカスタムディレクティブを作成しようとする以前の試みでは、 [0]なしのelemのみが正常に機能しました。

私の質問は次のとおりです。これらのカスタムディレクティブの作成におけるelemとelem [0]の違いは何ですか?

どんな助けでも感謝します!

回答 2 件
  • angularJsドキュメントによると、jQueryオブジェクトを返します。 elem[0].focus() に悩まされている場合    $(elem).focus() を使用できます

  • 基本的に、これらは明らかな違いです。

    elemは角度付きのjQliteインスタンスです

    elem [0]はネイティブjavascriptオブジェクトであり、jQliteはありません インスタンスなので、jquery DOMメソッドは使用できませんが、ネイティブのみ javascriptのメソッド。

あなたの答え