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 不受应该将放置属性放在 textarea 值中的 jQuery 的影响。我必须做什么才能完成这项工作?

4

2 回答 2

1

您可能想查看使用.live(), (在技术上已被贬值)或.on()在使用时附加/绑定到选定元素上的事件.load()

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

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

于 2012-11-03T22:25:08.440 回答
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 回答