如何更新现有的Bootstrap模态数据目标?

时间:2014-03-29 00:06:13

标签: jquery twitter-bootstrap-3

我尝试使用data-target更新现有data-target="#testModal1"以使用jquery #testModal2指向.data模式,但即使在数据属性更改后,它仍然会被链接到#testModal1

//Jquery:

$('#testButton').data('target', '#testModal2')
<!-- HTML: -->


<button id='testButton' data-toggle="modal" data-target="#testModal1">
      Test
    </button>

<div class="modal fade" id="testModal1" tabindex="-1" role="dialog" aria-hidden="true" style='display:none'>
  <div class="modal-dialog">
    <div class="modal-content">
      Testing Testing 1
    </div>
  </div>
</div>

<div class="modal fade" id="testModal2" tabindex="-1" role="dialog" aria-hidden="true" style='display:none;'>
  <div class="modal-dialog">
    <div class="modal-content">
      Testing Testing 2
    </div>
  </div>
</div>

2 个答案:

答案 0 :(得分:23)

让我们在jQuery文档中查看.data()是什么:

  

.data()

     

存储与匹配元素关联的任意数据,或者在指定数据存储中返回匹配元素集中第一个元素的值。

     

.data( key, value )

     

说明:存储与匹配元素关联的任意数据。

     
      
  •      

    输入:String

         

    命名要设置的数据的字符串。

  •   
  •      

    类型:对象

         

    新数据值;它可以是任何Javascript类型,包括数组或对象。

  •   

使用$('#testButton').data('target','#testModal2')您将修改data-target属性,但您会将字符串"#testModal2"存储在"target"字段中。然后$('#testButton').data('target')将返回"#testModal2"

确实.data('key')可用于返回data-key属性值。但您无法使用.data('key', 'newValue')设置它。

要设置属性值,最常见且最简单的方法是使用.attr()方法。

所以,答案很简单:在data中更改attr并使用data-target代替target

$('#testButton').attr('data-target','#testModal2');

JSFIDDLE

答案 1 :(得分:0)

就我而言,我的朋友们,这是有效的:

<a href="#" data-toggle="collapse" data-target="#collapse1064" 
aria-expanded="true" aria-controls="collapse" 
class="cliccable_submenu d-block position-relative 
text-dark text-uppercase collapsible-link py-2">Link</a>

$('a[data-target="#collapse1064"]').attr("aria-expanded","true");