1


jquery コードを整理しようとしていたので、オブジェクト リテラルを作成しましたが、現在focusTextAreaが機能せず、textarea の値が更新されていません。

ご協力いただきありがとうございます。

html

<textarea id="test"></textarea>​


JavaScript

(function($,window,document,undefined){

    var TEX = {

        inputField: $("textarea#test"),

        /* Init all functions */
        init: function()
        {
            this.focusTextArea();
        },

        /* Function update textarea */
        focusTextArea:  function()
        {
            this.inputField.text('test');
        },
    }

    $(document).ready(function(){
        TEX.init();
    });

})(jQuery,window,document);​


jsfiddle http://jsfiddle.net/vBvZ8/1/

4

2 に答える 2

2

まず第一に、あなたはjQueryをフィドルに正しく含めていません。また、 (ハンドラーのために)ドキュメントのにコードを配置することを意味していると思います。headdocument.ready

さらに重要なのは、ドキュメントの準備が整う前にセレクター$("textarea#test")が実行されるため、実際には要素が正しく検出されないことです。で割り当てることをお勧めします:inputFieldTEX.init

(function($,window,document,undefined){

    var TEX = {

        /* Init all functions */
        init: function()
        {
            this.inputField = $("#test");
            this.focusTextArea();
        },

        /* Function update textarea */
        focusTextArea:  function()
        {
            this.inputField.text('test');
        },
    }

    $(document).ready(function(){
        TEX.init();
    });

})(jQuery,window,document);​

更新された例:http: //jsfiddle.net/xntA2/1/

ちなみに、textarea#testはだけに変更する必要があります#testtextareaページ上に。が含まれる要素は1つだけである必要があるため、このビットは不要id=testです。

于 2012-12-23T16:46:28.153 に答える
0

要素が存在する前に要素を探すのを避けるための代替構文は、関数から要素を返すことです。

(function($,window,document,undefined){

    var TEX = {
        /* function won't look for element until called*/
        inputField:function(){
            return $("textarea#test")
       }, 
        init: function()
        {
            this.focusTextArea();
        },
        focusTextArea:  function()
        {
            this.inputField().text('test');
        },
    }

    $(document).ready(function(){
        TEX.init();
    });

})(jQuery,window,document);

デモ: http://jsfiddle.net/vBvZ8/5/

これは単純化された例であることは理解していますが、jQuery プラグインの作成にも非常に近づいており、それも役立つ可能性があります。以下は、例と同じ機能を提供します。

(function($, window, document, undefined) {    
    $.fn.focusTextArea = function() {
        return this.each(function(){
            $(this).text('test');
        })        
    };    
})(jQuery, window, document);

$(function() {
    $('textarea').focusTextArea()
});

デモ: http://jsfiddle.net/vBvZ8/8/

于 2012-12-23T17:07:35.663 に答える