0

そのため、ユーザーがクリックした内容に応じて、divのコンテンツを更新しています。画像を表示することもあれば、テキストを表示することもあります。

var output;
switch(type)
{
    case IMAGE:
        pages = null;
        contentText = null;
        upArrow = null;
        downArrow = null;

        var imageURL = "assets/images/" + items[itemIndex].imageURL;
        output = '<img src="' + imageURL + '" class="fullImage" />';
        break;

    case TEXT:
        pageIndex = 0;
        pages = items[itemIndex].copy.page;
        numPages = pages.length;
        lastPageIndex = numPages - 1;

        output = '<div id="contentText" class="text"></div>';
        output += '<div id="textUpArrow" class="arrow upArrow"></div>';
        output += '<div id="textDownArrow" class="arrow downArrow"></div>';

        contentText = $("#contentText");

        textUpArrow = $("#textUpArrow");
        textUpArrow.bind(MOUSE_DOWN, onUpArrowClicked);

        textDownArrow = $("#textDownArrow");
        textDownArrow.bind(MOUSE_DOWN, onDownArrowClicked);

        setText();
        break;
}
content.html(output);

問題は範囲に関するもののようです。JSファイルのルートレベルでcontentText、textUpArrow、textDownArrowを宣言しました(rootと呼ばれるかどうかはわかりませんが、すべての関数の外部にあるため、グローバルに使用できます)。

上記の変数をコンソールに出力すると、何も定義されていません。ただし、これらの変数を使用しようとすると、イベントリスナーのためであろうと、jQueryを介してCSSを変更するためであろうと、何も起こりません。

何を調べればいいですか?ありがとう!

4

4 に答える 4

1

DOMに追加されるdiv に、イベントをバインドしています。それはうまくいきません。

于 2012-08-07T20:49:42.017 に答える
1

.on()の代わりに使用したいと思います.bind()。jQuery .bind()ドキュメントから:

jQuery 1.7以降、この.on()メソッドは、イベントハンドラーをドキュメントにアタッチするための推奨されるメソッドです。以前のバージョンでは、この .bind()メソッドはイベントハンドラーを要素に直接アタッチするために使用されていました。ハンドラーはjQueryオブジェクトで現在選択されている要素にアタッチされているため、これらの要素は呼び出しが.bind()発生した時点で存在している必要があります。.on()より柔軟なイベントバインディングについては、またはのイベント委任の説明を参照してください.delegate()

于 2012-08-07T20:49:49.073 に答える
0

出力はいつドキュメントに適用されますか?

setText()にある場合は、出力テキストの処理が終了した後、contentTextを設定する前にそのメソッドを呼び出すことができます。

その変数を設定しようとすると、そのIDを持つドキュメントにdivがありません。

于 2012-08-07T20:48:15.173 に答える
0

これは、要素が作成される前にcontentTexttextUpArrowを設定するためです。textDownArrow

output = '<div id="contentText" class="text"></div>';
output += '<div id="textUpArrow" class="arrow upArrow"></div>';
output += '<div id="textDownArrow" class="arrow downArrow"></div>';

contentText = $("#contentText");

ここでcontentTextは、は要素IDの要素に設定されています#contentTextが、要素はまだ作成されていないため、未定義になります

于 2012-08-07T20:52:02.087 に答える