【问题标题】:Hide any list items after the third and add show more link隐藏第三个之后的所有列表项并添加显示更多链接
【发布时间】:2015-11-23 14:39:53
【问题描述】:

这类似于这个问题:Jquery, hide & show list items after nth item

我想隐藏第三个列表项之后的所有列表项并附加一个“显示更多链接” 链接显示更多链接必须指向显示更多...以便链接到正确的产品详细信息页面。

<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
</ul>

这是我正在使用的脚本:

$('ul')
 .find('li:gt(2)')
 .hide()
 .end()
 .append(
 $('<li><a href="javascript:Detail('2163230');">Show More...</a></li>').click( function(){
  $(this).siblings(':hidden').show().end().remove();
 })
);

这是一个指向小提琴的链接,其中 url 已替换为指向 google 的链接:http://jsfiddle.net/jelane20/ecbwue8z/

有没有办法使用 javascript:Detail('2163230');网址?

【问题讨论】:

  • 避免使用内联 JavaScript。请改用委托的事件处理程序。

标签: jquery


【解决方案1】:

我不确定您要做什么,但这是您需要做的:

http://jsfiddle.net/ecbwue8z/2/

说明:如果您尝试调用 js 函数,href 中的单引号将不起作用。您需要转义字符。

<a href="javascript:Detail("\2163230"\);"> 

编辑:这是新的解决方案:

   <script type="text/javascript">
    $('ul')
  .find('li:gt(2)')
  .hide()
  .end()
  .append(
  $('<br /><a href="?2163230");"">Show More...</a>').click(function () {
      $(this).siblings(':hidden').show().end().remove();
      Detail($(this).attr("href").substring(1,$(this).attr("href").length));
  })
 );

    function Detail(id) {
        window.location.href = "http://www.google.com?id=" + id;
    }

</script>

【讨论】:

  • 在您的答案中发布您的代码。最好有解释。如果 jsFiddle 消失了,那么您的答案将失去所有价值。
  • @j08691:感谢您的提醒。刚刚添加了解释。
  • 对此进行了测试,当我将其添加到网站时遇到问题,它以这种方式呈现:"Show更多...因此,当您单击“显示更多”时,它只是显示隐藏的项目,而不是将您带到正确的页面。
  • 这里的问题是,由于你试图调用一个js函数作为超链接url,所以click事件优先于该事件,不会执行与href关联的js方法。您可以做的一件事是将引荐 ID 作为 href 链接的一部分,并使用 onclick 调用实际方法。我已经编辑了解决方案以反映新的变化。可能不是最优雅的方式,但它会完成你的工作。
猜你喜欢
  • 2011-05-02
  • 2016-06-23
  • 2016-06-24
  • 2021-10-02
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
相关资源
最近更新 更多