【问题标题】:Read more opens 1st one all the time阅读更多始终打开第一个
【发布时间】:2014-04-22 16:43:43
【问题描述】:

我有一个包含大约 10 篇短篇文章的页面。

它们每个都作为“阅读更多”按钮,按下时会显示隐藏文本

我目前遇到的问题是,当我在 10 个按钮中的任何一个上按“阅读更多”时,它会显示第 1 篇文章隐藏的内容,而不是选定的文章。

我想我需要为每篇文章设置一个唯一的ID..并将阅读更多按钮链接到它..但我不知道如何设置它。

我看了这个,但无法让它工作how to give a div tag a unique id using javascript

var WidgetContentHideDisplay = {

init:function() {
   if ($('#content-display-hide').size() == 0) return;
    $('.triggerable').click(function(e){
        var element_id = $(this).attr('rel');
        var element = $('#'+element_id);
        element.toggle();
        if (element.is(':visible')) {
            $('.readmore').hide();
        } else {
            $('.readmore').show();
        }
       return false;
   });
}

}

var div = documentElemnt("div");
div.id = "div_" + new Date().gettime().toString;

$(document).ready(function(){ WidgetContentHideDisplay.init(); });

OP 编辑​​:抱歉,原始代码没有大写。我在尝试发布时不断出错,因此我将代码复制到 Dreamweaver 中,但由于某种原因它全部设置为大写。

【问题讨论】:

  • 所有的大写字母是怎么回事?请解决这个问题。
  • 您的大写锁定键是否损坏并卡在上面?为了大家的利益,我重新格式化了你的代码。未来,为了未来的同事和答疑者,请使用更具可读性的编码风格。

标签: javascript


【解决方案1】:

您可以为您的项目设置一个类并使用类选择(例如$('.DETAILED-ARTICLE)')来选择孩子(或兄弟等),而不是选择要使用 ID 切换的元素(即$('#'+ELEMENT_ID))您是如何构建 HTML 页面的)。

理论上,每个 ID 应该指向一个元素,但每个类都可以放入任意数量的元素。

【讨论】:

    【解决方案2】:

    如果您遇到错误,请阅读错误并查看它们是什么。快速阅读您的代码后,我注意到以下几点可能会导致问题:

    • “documentElemnt”拼写错误,这将使其无用。此外,documentElement 是一个read-only property,而不是您正在使用的函数。
    • toString 是一个函数,而不是一个属性,如果没有括号 (.toString()),它就不会像您希望的那样运行。

    运行代码,查看控制台中的错误并修复它们。这就是你开始的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多