2014-11-13 55 views
0

我有一個使用引導一個網站,並與KendoUI創建一個數據網格,每行包含以下形式的按鈕...如何更改按鈕內的文字?

<button type="button" id="requestbtn1" class="btn btn-success">Request</button> 

我迷上了這些按鈕的點擊事件具有以下JavaScript ...

$("button[id^='requestbtn']").click(function() { 
    var lgid = String(this.id).replace("requestbtn", ""); 
    alert("Request for slip " + lgid); 
    this.html("Done"); 
    this.addClass("btn-primary"); 
    this.removeClass("btn-success"); 
}); 

的代碼調用,警報顯示正確的號碼,但我試圖改變按鈕的文本爲「完成」和CSS類爲「BTN-小學」,以提醒用戶他們已經提出了這個要求。

最後三行中沒有一行可用。我原本他們都在一條線,像這樣...

this.html("Done").addClass("btn-primary").removeClass("btn-success"); 

...但分裂他們,看看是否有獨立的工作。

任何人有任何想法如何我可以改變文本和CSS類?

回答

1

使用此

$("button[id^='requestbtn']").click(function() { 
    var lgid = String(this.id).replace("requestbtn", ""); 
    alert("Request for slip " + lgid); 
    var $this = $(this); 
    Sthis.html("Done"); 
    Sthis.addClass("btn-primary"); 
    Sthis.removeClass("btn-success"); 
}); 
+0

超級快速和出色的回覆!請你能解釋一下額外代碼的作用,我對這一切都有點新鮮。 –

+0

這會給你DOM元素,但不是作爲一個jQuery對象。所以你不要使用你想要使用的方法 –

+0

難道你不能只使用'$(this).html(...'而不是將'$(this)'分配給一個變量嗎? – MattD

1

您試圖在原生DOM節點(this)上調用jQuery方法(html(),addClass()removeClass()等);無法訪問這些方法。如果您使用jQuery,請記住使用jQuery。或者,至少要記住您是使用DOM還是使用jQuery。

嘗試:

$("button[id^='requestbtn']").click(function() { 
    var lgid = String(this.id).replace("requestbtn", ""); 
    alert("Request for slip " + lgid); 
    $(this).html("Done").addClass("btn-primary").removeClass("btn-success"); 
}); 

或者,使用原生DOM選擇:

$("button[id^='requestbtn']").click(function() { 
    var lgid = String(this.id).replace("requestbtn", ""); 
    alert("Request for slip " + lgid); 
    this.innerHTML = 'Done'; 
    this.classList.add('btn-primary'); 
    this.classList.remove('btn-success'); 
}); 
+0

感謝,因爲你們倆給了基本相同的答案,我標誌着他們倆:) –

+0

你真的很受歡迎;我很高興獲得幫助。 :) –

+0

是否有一個原因,你覺得你必須改變你接受的答案,我的解決方案是否以某種方式失敗了你的要求? –