2013-01-18 32 views
0

在調用其上的button()方法後,爲什麼點擊處理程序從我的按鈕中刪除。我正在更改按鈕的內容,因此我需要刷新它們。我注意到刷新不起作用,所以我嘗試了button方法。JQuery Mobile - 在更改內容後刷新按鈕

這將restyle我的「按鈕」,但我失去了我的click事件。

我該如何做到這一點?

http://jsfiddle.net/RQZG8/2/

這裏是代碼:

$("[data-role=button]").html("hello world").button(); 
$("[data-role=button]").click(function(){ 
    alert("i have been clicked"); 
}); 

我最大的問題是,我有一個div這是作爲一個按鈕。我想更改div的內容,但是我希望能夠保持它的行爲,繼續看起來像一個按鈕。

+0

無論如何,您的示例工作。請在jsFiddle中重新創建您的錯誤。也刷新不起作用,因爲你的按鈕必須在刷新之前初始化,如下所示:$(「[data-role = button]」)。html(「hello world」)。button()。button('refresh');但是,你可能會注意到調用button()就足夠了。 – Gajotres

回答

1

試試這個:$("[data-role=button] .ui-btn-text").html("hello world");否則填充會丟失。

1

首先恕我直言,鑑於您的例子是這樣一個問題去(當你改變只有一個按鈕的標題),也沒有多大意義使用div作爲一個按鈕,當JQM給你很多標準選擇。

所有這些:

<button>Button element</button> 
<input type="button" value="Button" /> 
<input type="submit" value="Submit Button" /> 

通過JQM自動增強,按鈕,甚至沒有指定data-role="button"。 你當然可以使用鏈接作爲一個按鈕

<a href="index.html" data-role="button">Link button</a> 

現在,如果你仍然想使用你的div作爲一個按鈕,你不需要指定data-role="button"只是調用button()插件。這將爲您創建所有必要的標記,並且您的原始div將保留爲隱藏狀態。

<div id="button1">By button<div> 
$("div#button1").button(); 

要刷新按鈕,你改變了它的標題後,你需要調用refresh方法:

$("div#button1").html("Hello World").button("refresh"); 

現在正常處理特定按鈕的click事件(如果不是唯一的一個在頁面上),您可能需要更多具體的選擇器,而不僅僅是data-role=button屬性。 id將是完美的。因此,而不是

$("[data-role=button]").click(function(){...}); 

$("div#button1").click(function(){...}); 

而最後你肯定知道,但我沒有看到它在你的jsfiddle,所以我只是提到你最好把你的代碼其中一個jQM頁面處理程序。推薦使用pageinit

$(document).on("pageinit", "#page1", function(){ 
    ... 
}); 

Here是jsFiddle。