2015-08-28 42 views
0

我想換一個跨度的內容在我的形式 HTML裏面的html:如何更改跨度

<form action="javascript:submit()" id="form" class="panel_frame"> 

    <label>Origin:</label> 
    <div class="input-group" id="input-group"> 
     <input type="text" id="origin" name="origin" class="form-control"> 
     <span class="input-group-btn"> 
      <button id="btn-default" class="btn btn-default" type="button"> 
       <span class="glyphicon glyphicon-pushpin" aria-hidden="true"></span> 
      </button> 
     </span> 
    </div> 

我想變化是

<button id="btn-default" class="btn btn-default" type="button"> 
    <span class="glyphicon glyphicon-remove" aria-hidden="true"></span> 
</button> 

所以<span class="input-group-btn">車內容什麼改變是:圖標圖釘刪除和行動useCurrentPosition clearPosition。

我'使用jquery,儘管我已經閱讀了關於Stack的類似問題的其他答案:How can I change the text inside my <span> with jQuery?how to set a value for a span using JQuery我還沒有解決這個問題。

我想:

$("#input-group span").html(' 
    <button id="btn-default" class="btn btn-default" type="button" onclick="br_bus.useCurrentPosition()"> 
    <span class="glyphicon glyphicon-pushpin" aria-hidden="true"></span> 
    </button> 
'); 

,給予一個ID,跨度也修改滿格,但沒有解決我的問題。 我錯過了什麼?

+3

' 「#origin跨度」'搜索'span's ** **裏面'#origin',有'#origin'裏面沒有'span'。 – Regent

+0

我寫錯了抱歉,寫的問題,輸入組 – Mitro

+0

現在的代碼確實與'document.ready'一起工作(如果腳本在HTML中的'form'之前)並且具​​有替換爲單行的HTML代碼:[fiddle](http ://jsfiddle.net/v3Lfnuuk/)。 – Regent

回答

2

下面就來克服辦法改變onclick屬性的問題,這是不好的做法,不存儲全球var和使用jQuery代表團(學會使用它,它真的很好):

$(document).on('click','.btn', positionChange); // Give that button an id on his own and replace '.btn' with '#newId' 

// Not using an anonymous function makes it easire to Debug 
function positionChange(){ 
    var $btn = $(this), // Caching jQuery elements is good practice 
     $span = $btn.find('span'), // Just caching 
     pushpinApplied = $span.hasClass('glyphicon-pushpin'); // Check which icon is applied 

    (pushpinApplied) ? useCurrentPosition() : clearPosition(); 

    $span.toggleClass('glyphicon-pushpin glyphicon-remove'); 
} 
2

而不是改變onclick屬性中調用的函數,我建議在一個函數中有一個標誌來定義它應遵循的邏輯。

例如:

function positionChange(this){ 
    var $this = $(this); 
    if(!$this.data("currentpositionused")){ 
     //useCurrentPosition() code here 
     $this.data("currentpositionused", true); 
    } 
    else { 
     //clearPosition() code here 
     $this.data("currentpositionused", false); 
} 

然後更改您的HTML:

<button class="btn btn-default" type="button" onclick="positionChange(this)"> 
+0

你應該*不*使用變量來保持UI狀態。這並不好。 –

+0

(尤其是在板子上有jQuery)最好忘記'onclick'屬性。 – Regent

+0

@Regent儘管我100%同意(jQuery使用與否),但我認爲這超出了問題的範圍。 – Curt

0

試試這個:

$("span.input-group-btn").html('<button class="btn btn-default" type="button" onclick="clearPosition()"> 
<span class="glyphicon glyphicon-pushpin" aria-hidden="true"></span> 
</button>'); 
+0

這不會改變什麼 – Mitro

0

如果你想只改變button內的onclick屬性特定的span你可以在你的下面使用腳本,

$(document).ready(function(){ 
    $("span.input-group-btn button").attr("onclick","clearPosition()"); 
}); 

編輯

$(document).ready(function(){ 
    $("span.input-group-btn button").attr("onclick","clearPosition()"); 
    $("span.input-group-btn button span").attr("class","Your_class"); 
}); 

而且還可以瞭解如何更改/添加/刪除屬性值....

+1

「你可以使用」*,使用「必須」使得newbiews認爲這是唯一的選擇。 – Kriggs

+0

不僅我想改變glyphicon glyphicon-pushpin – Mitro