0

下面的代码适用于“mousemove”,但我希望图像在页面加载时显示,而我所做的任何更改都不会使图像在页面加载时显示。任何帮助是极大的赞赏!谢谢伊恩

$(document).ready(function () {

    $("body").mousemove(function () {

    $("li.fsn-level-1").each(function () {

      var imgCount = $(this).children("span").first().children("img").length;

      if (imgCount < 2) {
        $(this).children("span").first().prepend("<img id='imgPlus' src='images/plus.png' style='display:inline' />"); 
        $(this).children("span").first().prepend("<img id='imgMinus' src='images/minus.png' style='display:none' />");

      }

      var closed = $(this).hasClass("closed");
      var open = $(this).hasClass("open");
      var first = !closed && !open;
      if (first) {
        $(this).removeClass("open")
          $(this).removeClass("closed").addClass("closed");
        var sub = $(this).children("ul");
        if (sub.length) {
          sub.hide();
        }

        var plus = $(this).children("span").first().find("img[id='imgPlus']");
        if (plus.length)
          plus.show();

        var minus = $(this).children("span").first().find("img[id='imgMinus']");
        if (minus.length)
          minus.hide();
      }


      $(this).unbind('hover').bind('hover', function () {
        CloseAllSubMenu();
        var closed = $(this).hasClass("closed");
        var open = $(this).hasClass("open");
        var first = !closed && !open;


        if (first || closed) {
          $(this).removeClass("closed");
          $(this).removeClass("open").addClass("open");
          var sub = $(this).children("ul");
          if (sub.length) {
            sub.show();
          }

          var plus = $(this).children("span").first().find("img[id='imgPlus']");
          if (plus.length)
            plus.hide();

          var minus = $(this).children("span").first().find("img[id='imgMinus']");
          if (minus.length)
            minus.show();

        }
        if (open) {

          $(this).removeClass("open")
            $(this).removeClass("closed").addClass("closed");

          var plus = $(this).children("span").first().find("img[id='imgPlus']");
          if (plus.length)
            plus.show();

          var minus = $(this).children("span").first().find("img[id='imgMinus']");
          if (minus.length)
            minus.hide();
        }
      });
    });
4

2 回答 2

0

只是问一个愚蠢的问题,如果你想在 page_load 上加载图像,那么为什么不把标签放在页面上开始,所以图像已经作为文档的一部分加载了。

如果您想在文档准备好(页面加载后)而不是鼠标悬停时加载图像,那么只需将其删除

$("body").mousemove(function () { }

...部分来自您的 javascript,其余部分将立即触发,因为它不再连接到 mousemove 函数。

于 2013-03-26T19:20:33.080 回答
0

很难看出你到底想做什么,但这是我发现的:

页面准备就绪后,您将在此处附加图像:

$(this).children("span").first().prepend("<img id='imgPlus' src='images/plus.png' style='display:inline' />");
$(this).children("span").first().prepend("<img id='imgMinus' src='images/minus.png' style='display:none' />");

这将导致图像在该时间点加载,即:您正在等待页面准备好(加载),然后您正在附加它们,并在页面加载后强制它们加载。

如果您需要动态(看起来像),请在调用之前尝试运行它$(document).ready();。这样,它们将被包含在文档的负载中(以及之后发生的任何事情。

于 2013-03-26T19:15:41.220 回答