【问题标题】:jQuery adding and removing attributesjQuery添加和删除属性
【发布时间】:2015-03-24 00:17:02
【问题描述】:

我有一个项目,我们在同一页面上有多个模式。所以想法是从被点击的按钮中获取 id 并将该 id 附加到模态。例子是:

这是我在 plunker 中的代码:bootstrap modal

 <button class="btn btn-readmore" data-toggle="modal" href="modals/serv-cutting.html" data-target="#vividCutting">read more</button>

 <button class="btn btn-readmore" data-toggle="modal" href="modals/serv-color.html" data-target="#vividColor">read more</button>

然后将该 id 属性添加到:

 <div class="modal fade" tabindex="-1" role="dialog" aria-  labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog"><div class="modal-content"></div>
    </div>
</div>

所以我有很多模态,我想出了这个 jQuery,就好像我不先删除 id 一样,然后所有触发模态的按钮都保持打开同一个模态:

$('button.btn-readmore').click(function() {
    var newId = $(this).attr('data-target').slice(1);
    console.log(newId);
    if($('.modal').prop('id', newId)){
        $(this).removeProp('id', newId);
    } else {
        $('.modal').prop('id', newId)
    }
});

我认为我很接近,但需要一点建议。

【问题讨论】:

  • 您拥有的代码将更改所有 .modal 的 id。真的不清楚你想通过改变ID来完成什么
  • 不完全清楚您要达到的目标。看起来您正在尝试将相同的 ID 添加到许多节点。但是,每个 ID 都应该是唯一的,并且每个节点应该只有 1 个 ID。我想你需要上课?
  • 我有 6 个按钮都有唯一的 ID,它们都不相同

标签: jquery twitter-bootstrap modal-dialog


【解决方案1】:

根据您对我之前的回答和您的问题的更新,您似乎想要重新使用相同的模式并根据单击的按钮加载远程内容。

HTML:

<button class="btn btn-readmore" data-toggle="modal" href="modals/serv-color.html" data-target="#modal1">read more 1</button>
<button class="btn btn-readmore" data-toggle="modal" href="modals/serv-cutting.html" data-target="#modal1">read more 2</button>
<div id="modal1" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content"></div>
    </div>
</div>

JavaScript 在隐藏模式后销毁它,以便在每次重新创建远程内容时都可以加载它,由Twitter bootstrap remote modal shows same content everytime 提供

$('body').on('hidden.bs.modal', '.modal', function () {
    $(this).removeData('bs.modal');
});

【讨论】:

  • 我试过你的例子,但同样的问题,无论点击哪个按钮,它都会打开第一个打开的模式。这是一个笨拙的例子:embed.plnkr.co/HqcgtGSt7gGHlkgSjs9m/preview
  • 示例中你只有一个modal,你的请求是改变modal的id,而不是根据id打开一个modal。您是否打算拥有多个模式并打开一个 id 与 data-target 中的值匹配的模式?你的问题不是很清楚。
  • 是的,这正是我想要做的!我将有大约十几个模态,我正试图将代码保持在最低限度
  • 嗯,这行得通,但我试图避免多次添加模态对话框 html,就像你有两次一样。也许没有办法实现我想要做的事情?
  • 模态对话框内容是否不同?如果是这样,您需要将每个版本的内容都写在某个地方。这样它就在 HTML 中,这使得它更容易管理。如果它是一个简单的字符串,您可以在 JavaScript 中创建一个数组并重新使用相同的模式,每次都将字符串插入到模式的主体中。但是你在 JavaScript 数组中得到了 html,这可能比只有多个模式更复杂。
猜你喜欢
  • 2011-08-21
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
  • 2011-01-30
相关资源
最近更新 更多