Jquery pageLoad()在多个js文件中不起作用

时间:2012-02-09 17:14:09

标签: c# jquery asp.net ajax

我有一个带有ajax和jquery的asp.net网站。 我需要在两个jquery脚本文件中使用jquery pageLoad函数,但问题是它只能在一个首页附加的主页中工作。

我创建了简单的视觉stuido测试网站项目,如果您下载并查看它,我将非常高兴。

我将它上传到mediaFire http://www.mediafire.com/?4b71u9jvo0mxru3只需5kb,请帮助我某人

3 个答案:

答案 0 :(得分:4)

每页只能有一个页面加载。我下载了你的代码,我改变了这个:

在MasterPage.master中:

<asp:ScriptManager ID="MainScriptManager" runat="server" EnablePartialRendering="true">
        <Scripts>
              <asp:ScriptReference Path="~/jscript/btnFirst.js" />
              <asp:ScriptReference Path="~/jscript/second.js" />
        </Scripts>
</asp:ScriptManager>

然后将其删除:

  <script type="text/javascript" src="jscript/second.js"></script>

  <script src="jscript/btnFirst.js" type="text/javascript"></script>

在btnFirst.js中(例如)将pageLoad更改为:

// Attach a handler to the load event.
Sys.Application.add_load(applicationLoadHandler);

function applicationLoadHandler() {

    $('#btnFirst').each(function () {
        $('#btnFirst').css('text-decoration', 'none');
        $('#btnFirst').css('opacity', '1');
        var elem = $(this);
        setInterval(function () {
            if (elem.css('opacity') == '1') {
                elem.css('opacity', '0.1');
            } else {
                elem.css('opacity', '1.0');
            }
        }, 500);
    });
};

你已经完成了; - )

答案 1 :(得分:0)

您应该使用$(document).ready而不是使用pageLoad()。这通过将匿名函数传递给添加到队列的.ready()函数来实现。加载DOM后,将运行所有匿名函数。

$(document).ready(function(){
  // your function code here
});

答案 2 :(得分:0)

我的同事(感谢James)提出的另一种方法是使用自定义事件(请注意,这仍在测试中)。

步骤1:在母版页中,将以下内容作为最后一个脚本(在其他脚本之后):

<script type="text/javascript">
    function pageLoad(sender, args) {
        $(document).trigger('PartialPageLoad');
    }
</script>

步骤2:在脚本文件中,当您想在pageLoad上执行某些操作时,请按如下方式附加到事件:

$(document).on('PartialPageLoad', function () {
  doSomething();
  doSomethingelse();
});