0

.loadjQueryの関数を使用して、ページの一部を別のページに読み込んでいます

$("#loadingDockShotPg").load("include/shot_comments.php?id="+get['id']);

ID「loadingDockShotPg」でdivにロードされている私のファイルには、jQueryコマンドの影響を受けたい要素があります。

を使用して別のページに配置されている HTML.load

 <textarea id='newNoteTextarea' class='width100 hidden' placement='Write a comment...'></textarea>

上記の HTML が配置されている親ファイルに配置されている jQuery

    $(document).ready(function(){
        $("input[placement], textarea[placement]").each(function(){
        var orAttr = $(this).attr("placement");

        $(this).val(orAttr);

        $(this).focus(function(){
            if($(this).val() == orAttr)
            {
                $(this).val("");
            }
        });
        $(this).blur(function(){
            if($(this).val() == "")
            {
                $(this).val(orAttr);
            }
        });
        });
    });

問題は、textarea の値に配置属性を入れることになっている jQuery の影響を受けていないことです。この作業を行うにはどうすればよいですか?

4

2 に答える 2

1

あなた.load()は「ライブ機能」です。コンテンツがロードされた後に、コンテンツを DOM に追加しています。. でコンテンツ.each()が追加される前に、関数は既に実行されています.load()。これを修正するには、コールバックとして完了した.each()ときに関数を実行できます。.load()

これは私がそれを行うべきだった方法です:

$(function(){
    var inputElements = $("input[placement], textarea[placement]");

    function setInputValue() {
        var self = $(this),
            orAttr = self.attr("placement");

        self
            .val(orAttr)
            .focus(function(){
                if(self.val() == orAttr)
                {
                self.val("");
                }
            })
            .blur(function(){
                if(self.val() == "")
                {
                self.val(orAttr);
                }
            });
    }

    inputElements.each(setInputValue);

    $("#loadingDockShotPg").load("include/shot_comments.php?id="+get['id'], function(){
        inputElements = $("input[placement], textarea[placement]");
        inputElements.each(setInputValue);
    });
});
于 2012-11-03T22:30:16.763 に答える
1

.live(), (技術的に減価償却されています)の使用を検討するか、使用.on()時に選択した要素のイベントにアタッチ/バインドすることをお勧めします。.load()

http://api.jquery.com/live/

http://api.jquery.com/on/

于 2012-11-03T22:25:08.440 に答える