我正在使用一个popover,我需要动态地改变其中的一部分内容。更具体地说,我正在使用bootstrapx-clickover,所以我不能简单地更新数据内容,因为我的按钮会关闭弹出窗口。
我目前的代码如下:
<span class="label label-importan" rel="clickover" data-content="NEW TEXT HERE<button class='btn' data-toggle='button' data-dismiss='clickover'>Close</button>" data-original-title="Title">data</span>
如果我打电话:
....
var el = $(this);
el.attr('data-content', "New Data");
....
这很遗憾地删除了按钮代码。有没有办法只更新数据内容的文本而不是按钮HTML?
答案 0 :(得分:1)
假设data-content
属性的内容与您的示例保持一致,IE总会有一些文本后跟一个<button>
元素,您可以使用一些类似于此的代码 -
var attributeContent = el.data('content');
var withoutText = txt.replace(/.*<button/,'<button');
el.data('content','SOME NEW TEXT HERE'+withoutText);
它是一种低技术解决方案,它取决于data-content
值的一致性,但这可能只适用于您的具体情况。
因为您实质上每次都添加一个新元素(<button>
元素),您可能需要在父元素上使用delegate()
函数来允许自己将事件处理程序附加到元素动态生成。