0

ボタンのメソッドを呼び出した後、ボタンからクリック ハンドラが削除される理由はありますかbutton()。ボタンのコンテンツを変更しているため、ボタンを更新する必要があります。リフレッシュがうまくいかないことに気づいたので、そのbutton方法を試してみました。

これにより「ボタン」のスタイルが変更されますが、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動作はそのままでボタンのように見せ続けられるようにしたいです。

4

2 に答える 2

1

まず第一に、質問に沿った例(ボタンのキャプションのみを変更する場合)をdiv考えると、jQMが多くの標準的な選択肢を提供する場合、aをボタンとして使用する意味はあまりありません。

これらすべて:

<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を指定する必要はありません。これにより、必要なすべてのマークアップが作成され、元の div は非表示のまま保持されます。data-role="button"button()

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

キャプションを変更した後にボタンを更新するには、refreshメソッドを呼び出す必要があります。

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

通常、特定のボタンのクリック イベントを処理するには (ページ上の唯一のボタンではない場合)、おそらくdata-role=button属性だけでなく、より具体的なセレクターが必要です。idそれにぴったりでしょう。だから代わりに

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

行う

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

そして最後に、あなたはそれを最も確実に知っていますが、私はあなたのjsfiddleでそれを見ませんでした. pageinitが推奨される方法です。

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

ここにjsFiddleがあります。

于 2013-01-19T05:52:27.233 に答える
1

これを試してください:$("[data-role=button] .ui-btn-text").html("hello world");そうしないと、パディングが失われます。

于 2013-01-18T23:28:35.830 に答える