【问题标题】:How to load a div after the line break on click event?如何在点击事件换行后加载 div?
【发布时间】:2012-10-13 00:22:39
【问题描述】:

我正在 Wordpress 下创建一个单页作品集。每个画廊缩略图都是一个列表项。
当您单击一个项目时,它会加载一个滑动抽屉 (#DrawerContainer),使用 ajax 从帖子中提取内容。

我希望这个抽屉出现在点击项目之后的行上。 由于是流畅的布局,我不知道浏览器是连续显示 1、2、3、4 还是 5 个项目。

我试图将我的抽屉附加到每个<li>,但我担心如果我点击缩略图, 滑块将打开并使其他缩略图跳到下一行。

所以我认为防止布局问题的最佳方法是仅在换行后调用抽屉

如何定位该行的最后一个 li 项,并在该行的换行符后加载一个 div?

如果我不清楚,这里是我希望看到渲染的代码

编辑:如果你想动手,我只是将代码添加到 jsfiddle在上面。 http://jsfiddle.net/F6MvZ/10/

<ul id="portfolio-list">
    <li><a href="" class="ProjectWrap">item1</a></li>
    <li><a href="" class="ProjectWrap">item2</a></li>
    <li><a href="" class="ProjectWrap">item3</a></li> //end of first row (br/)

    <li><a href="" class="ProjectWrap">item4</a></li> //if I click this item
    <li><a href="" class="ProjectWrap">item5</a></li>
    <li><a href="" class="ProjectWrap">item6</a></li> //end of second row (br/)

        <div id="DrawerContainer"></div> // the content of item4 appears here

    <li><a href="" class="ProjectWrap">item7</a></li> //end of third row
</ul>

这是我正在努力的代码

$(document).ready(function(){
    $.ajaxSetup({cache:false});
    $(".ProjectWrap,.mosaic-overlay,.mosaic-backdrop").click(function(){
        var post_link = $(this).attr("href");
        //$('#DrawerContainer').slideToggle(500);
        $("#DrawerContainer").html("loading...");
        $("#DrawerContainer").load(post_link + " #container > * ");
    return false;
    });

        //Here is the part I'm stuck with now

    $(#portfolio-list).click(function(){
        $("<br/>").append('<section id="DrawerContainer"></section>');
    });

        //I assume the #DrawerContainer will generate a br/

});

【问题讨论】:

  • 考虑使用jsfiddle.com,它会让用户更容易帮助你。
  • 无论如何.append(...) 不会这样做.. 改用.after(...)
  • 我认为 Ofir 的意思是 jsfiddle.net
  • 哇,谢谢,我不再孤单了! :) 我设法将所有东西放在 jsfiddle 中,但现在我无法加载 ajax 来测试它。我不熟悉 jsfiddle 也许一个

    足以测试抽屉。无论如何这里是地址:jsfiddle.net/F6MvZ/10

  • 将 DIV 放入 UL 中并不是一件好事(即有效),并且可能会给您带来问题。您可以在 DIV 之前关闭 UL,然后重新打开另一个 UL,或者根据需要将 UL/LI 对替换为 DIV/DIV 和样式。

标签: ajax wordpress jquery


【解决方案1】:

寻找这样的东西?

http://jsfiddle.net/RF6df/1/

它是我最初写的内容的扩展。希望这会有所帮助。

【讨论】:

  • 嗨@techfoobar,它非常接近我正在寻找的东西。实际上,在尝试使您的代码适应我的页面时,我注意到第一部分并不是抽屉工作所必需的。我还将您的类更改为 id(我正在使用类来过滤我的投资组合项目)。但是现在我无法将您的代码与我用来加载我的 ajax 的代码合并......而且我还需要使用“当前”按钮打开/关闭(slideToggle)抽屉。如果你有一点时间,你能帮我吗?这是更新的代码link
  • 当然。我会在几个小时后找到一些时间,然后为您解决。
  • 您的最新代码似乎有一些问题,主要是您正在创建具有相同 ID 的多个元素。请注意,ID 在 DOM 中必须是唯一的。否则,根据 ID 调用将仅返回第一个匹配元素。这正是我们使用类来识别元素组和使用 ID 来识别单个元素的原因。有关更多信息,请参阅:css-tricks.com/the-difference-between-id-and-class
  • 你是对的。由于您每次都在删除前一个元素,因此您不会创建重复的 ID。
  • Ok thx,我知道 ID 和 class 之间的区别,但由于我只是在学习 jQuery 语法,所以我犯了很多错误。 :) 在检查代码时我没有注意到双倍的 ID。您是在谈论“当前”ID吗?当我写 .removeAttr('id'); 时,浏览器会擦除 ID 还是只是隐藏(并保存在某个地方)?
猜你喜欢
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 2011-07-24
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多