带有脚本的 jQuery .load()

发布于 2024-12-04 03:39:57 字数 1173 浏览 1 评论 0原文

我知道这个问题已经被问过,但我还没有找到任何令人满意的答案。我有一个非常简单的 html 页面,我想将其加载到许多其他页面中。这没问题,但我遇到的问题是这个 html 页面有一个 jQuery 悬停函数,该函数根本不会在其他页面上执行。我尝试过在每个页面上放置悬停功能,我尝试过.getScript。据我了解,jQuery 将从 .load() 页面加载脚本,执行它们,然后删除它们。但由于它是一个悬停功能,我需要保留这些脚本。我有什么办法可以做到这一点吗? 如果有必要,我会发布代码,但它工作得很好,所以我不认为是这样的......

在每个页面上:

    if ($("#zz7_Menu:contains('myname')")) {
    $("#toolbar").load('toolbar.html table.toolbaradmin');
}
else {
    $("#toolbar").load('/toolbar.html table.toolbar');
}

toolbar.html:

<script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
<link rel="stylesheet" href="jquery-ui/css/redmond/jquery-ui-1.8.13.custom.css" type="text/css" media="all" />

<script>
    $(document).ready(function() {
    $('.ui-state-default').hover(function() {
        $(this).removeClass('ui-state-default').addClass('ui-state-hover');
    },
    function() {
        $(this).removeClass('ui-state-hover').addClass('ui-state-default');
    });
    });
</script>

<table class="toolbar">
    <tr>
        <td class="ui-state-default ui-corner-all toolbar">

等等......

I know this question has been asked but I haven't found any satisfactory answers. I have a very simple html page that I want to load into a number of other pages. That's no problem but where I'm getting stuck is that this html page has one jQuery hover function that simply will not execute on the other pages. I've tried putting the hover function on each page, I've tried .getScript. From what I understand, jQuery will load the scripts from the .load() page, execute them, then remove them. But since it's a hover function I need those scripts to stay around. Is there any way I can do this?
I'll post the code if necessary but it works perfectly so I don't think it's that...

on each page:

    if ($("#zz7_Menu:contains('myname')")) {
    $("#toolbar").load('toolbar.html table.toolbaradmin');
}
else {
    $("#toolbar").load('/toolbar.html table.toolbar');
}

toolbar.html:

<script type="text/javascript" src="scripts/jquery-1.6.2.min.js"></script>
<link rel="stylesheet" href="jquery-ui/css/redmond/jquery-ui-1.8.13.custom.css" type="text/css" media="all" />

<script>
    $(document).ready(function() {
    $('.ui-state-default').hover(function() {
        $(this).removeClass('ui-state-default').addClass('ui-state-hover');
    },
    function() {
        $(this).removeClass('ui-state-hover').addClass('ui-state-default');
    });
    });
</script>

<table class="toolbar">
    <tr>
        <td class="ui-state-default ui-corner-all toolbar">

etc...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

青丝拂面 2024-12-11 03:39:57

尝试将悬停代码移动到独立的 JavaScript 文件中(您可以使用

现在,在 .load() 成功完成后,使用 jQuery 再次安装悬停函数调用。解压后,这应该是一行代码。

Try to move the hover code into a standalong JavaScript file (which you can load everywhere with <script src="...">).

Now use jQuery to install the hover function call again after .load() has completed successfully. After extracting, this should be a single line of code.

捶死心动 2024-12-11 03:39:57

将影响表格的 javascript 移至表格之后。由于文档已经准备好,因此它会立即运行,这恰好是在将表格添加到页面之前。另外,如果父页面中已经包含jquery,则无需在正在加载的页面中包含jquery。

<table>
  <!-- ... table stuff ... -->
</table>
<script>
    $(document).ready(function() {
    $('.ui-state-default').hover(function() {
        $(this).removeClass('ui-state-default').addClass('ui-state-hover');
    },
    function() {
        $(this).removeClass('ui-state-hover').addClass('ui-state-default');
    });
    });
</script>

Move the javascript that affects the table to AFTER the table. Since the document is already ready, it gets ran immediately, which happens to be before the table is added to the page. Also, if jquery is included in the parent page already, you don't need to include jquery in the page you are loading.

<table>
  <!-- ... table stuff ... -->
</table>
<script>
    $(document).ready(function() {
    $('.ui-state-default').hover(function() {
        $(this).removeClass('ui-state-default').addClass('ui-state-hover');
    },
    function() {
        $(this).removeClass('ui-state-hover').addClass('ui-state-default');
    });
    });
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文