【问题标题】:jQuery - show div content on button click (modal style)jQuery - 在按钮单击时显示 div 内容(模态样式)
【发布时间】:2013-09-26 12:23:16
【问题描述】:

我的目标是隐藏所有 div(通过 css 类),然后在模态样式弹出窗口中显示它们(再次通过 css 完成)。例如:

<a href="" id="speclinkOpen">Show Spec</a>
<div class="speclink">   
    <h1>This is spec 1</h1>
    <a id="speclinkClose">Close</a>    
</div>

<a href="" id="speclinkOpen">Show Spec</a>
<div class="speclink">   
    <h1>This is spec 2</h1>
    <a id="speclinkClose">Close</a>    
</div>

div 中的内容(speclink 类)是隐藏的。当他们按下按钮(id speclinkOpen)时,我希望它显示相关内容,因此如果单击顶部按钮,则为“这是规范 1”,如果单击底部按钮,则为“这是规范 2。

我知道我需要使用 on.click THIS 而不是实际的类名,但不完全确定我是怎么做的..有人可以帮我解释一下吗?

本质上,jQuery 会以覆盖样式显示 div 内容,但它如何知道要加载的 div 内容是基于使用相同类名的 im 按下的哪个按钮?命名每个不同不是一个选项,因为我有这么多,但也许我正在以完全错误的方式解决这个问题?谢谢约翰。

【问题讨论】:

  • 有数百个插件可以做到这一点。你有什么理由不能使用吗?这只是个人学习jQuery的项目吗?
  • 注意:一个元素的ID必须是唯一的......在您的示例代码中有多个具有相同ID的元素......使用类属性对相似的元素进行分组
  • 个人项目学习..

标签: jquery html ajax modal-dialog


【解决方案1】:

看看data attributes

你可以在你的 html 中做类似的事情:

<a href="#" class="speclinkOpen" data-div="div1">Show Spec</a>
<div class="speclink" id="div1">   
    <h1>This is spec 1</h1>
    <a id="speclinkClose1">Close</a>    
</div>

<a href="#" class="speclinkOpen" data-div="div2">Show Spec</a>
<div class="speclink" id="div2">   
    <h1>This is spec 2</h1>
    <a id="speclinkClose2">Close</a>    
</div>

在 jQuery 脚本中:

$(function(){
    $('img.speclinkOpen').on('click', function(){
       var id = $(this).data('div'); // take the id to "highlight"
       $('#' + id).addClass('modal'); // do whatever you want in with class or .css()
    });
});

编辑

如果您不能使用数据属性,因为您无法将 id 属性唯一地分配给您的 div:

$(function(){
    $('img.speclinkOpen').on('click', function(){
       $(this).next('div.speclink').addClass('modal'); // do whatever you want in with class or .css()
    });
});

【讨论】:

  • 我遇到的问题是数百个需要单独的唯一数据属性..
  • 如果它们是动态创建的,只需添加一个计数器并自动创建 ID。否则,您可以使用 jQuery 中的 .next() 选择器。检查我的更新。
  • 抱歉,我可以在这里寻求更多指导吗?我在这里创建了 jsfiddle:jsfiddle.net/P5mkt/1 但是如果您单击第一个显示规范它显示正常,然后单击下一个显示规范它显示正常但是如果您再次单击第一个显示规范它不会变回来?
  • 当我在实际页面上使用该 jsfiddle 中的代码时,当我单击显示规范链接时,什么也没有发生...
  • 使用 .css('display', 'block') 你只显示 div,但是当你显示第二个时你还需要隐藏第一个,因为在你的情况下显示第一个 div低于第二个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多