2016-12-21 7 views
0

これは重複する可能性のある質問かもしれませんが、検索のフレーズ方法はわかりません。私はJSのプロパティに精通していない。Javascript/Jqueryコールバックをロードしてベース関数を書き込む

CASE:

は、簡単にするためなどのサイズを変更し、私はなど、テキスト、画像、オーディオ、ビデオなどの一部の要素タイプを作成し、私は彼らに、このようなドラッグと同じ能力を与えると仮定し、回転させると言うことができますこの2つの要素、TextとImageを考えてみましょう。

問題:

が、私はこれら二つの要素のサイズを取得し、そのラッパーのdivにそれらを設定する必要があるとしましょう。

  • テキスト要素はシンプルですが、私はちょうどすぐにサイズを取得し、ラッパーのdivのサイズを設定することができます。

  • イメージ要素はイメージのロードを待機し、そのサイズはロードが発生した後、つまりロードコールバックでのみ設定できます。私が欲しいもの

簡単な例

function createText(){ 
    var aDiv = createWrapperDiv(); // <div class="element"></div> 
    var anElem = $('<textarea></textarea>') 
    aDiv.append(anElem) 

    // can set immediately 
    aDiv.attr('width', anElem.width()); 
    aDiv.attr('height', anElem.height()); 

    // Some other size-DEPENDENT and size-INDEPENDENT stuff can both be done here. 
    sizeDependentStuff(); 
    sizeIndependentStuff(); 

} 

function createImage(){ 
    var aDiv = createWrapperDiv(); // <div class="element"></div> 
    var anElem = $('<img>') 
    aDiv.append(anElem) 

    // need to wait for element to load. 
    anElem.attr('src',imageUrl) 
    anElem.load(function(e) { 
     aDiv.attr('width', e.currentTarget.width()); 
     aDiv.attr('height', e.currentTarget.height()); 

     // Some other size-DEPENDENT stuff. 
     sizeDependentStuff(); 
    }); 

    // Some other size-INDEPENDENT stuff. 
    sizeIndependentStuff(); 

} 

私はsizeDependentStuff両方を入力取り、ないcreateSimpleElement機能(工場出荷時に似たもの)を定義したいと同じコードを再利用できるようにsizeIndependentStuff私は2つ以上の種類があり、数が増えることに注意してください。私はロードプロセスに取り組むための適切な方法を見つけることができません。

私はそれが明らかであり、私はまだ学習過程にあると考えてください。

ありがとうございました。

+0

スタックオーバーフローの検索機能の右上に表示されます。代わりにgoogleとパラメータ "site:stackoverflow.com"を使用して – zerohero

+0

を検索することができます。このお返事ありがとうございます。しかし、私はこの問題に関する検索をどのように "フレーズ"するのか分かりません。不明瞭なことには申し訳ありません。 –

+0

ありがとう。コードを繰り返し使用することなく、動的に要素を作成しようとしていると要約できます。共通のコードを持つ関数を作成し、オブジェクトを出力させてから、それを一意にするためのパラメータとして名前を渡し、動的要素を作成するループでその関数を呼び出します。 – zerohero

答えて

0

このようなものはどうですか?

function base(parentElement, element){ 
    parentElement.append(element); 
    parentElement.attr('width', element.width()); 
    parentElement.attr('width', element.width()); 
    /*other common properties...*/ 
} 

function createText(){ 
    var aDiv = createWrapperDiv(); 
    var anElem = $('<textarea></textarea>') 
    base(aDiv, anElem);  
} 

function createImage(){ 
    var aDiv = createWrapperDiv(); 
    var anElem = $('<img>') 
    anElem.attr('src',imageUrl) 
    anElem.load(function(e) { 
     base(aDiv, anElem); 
    }); 

    // Some other size-INDEPENDENT stuff. 

    } 
} 
+1

は、loadイベントをバインドした後に常にsrcを設定します。変更された内容とその理由を常に説明してください。 –

関連する問題