0

この簡単な例を試して、何が問題になっているのか教えていただけますか:http: //jsfiddle.net/ca11111/unQWP/1/。テーマは変更されましたliが、リストビューの更新では更新できません。

右ボタンのテーマを更新したい場合も同じ問題が発生します:http://jsfiddle.net/ca11111/unQWP/2/。エラーが発生します:

Uncaught TypeError:未定義のメソッド'removeClass'を呼び出すことができません

=================================================

このALMOSTが機能する理由を知ることはできますが、機能しません。

http://jsfiddle.net/ca11111/unQWP/5/

テーマを切り替える必要があります

4

2 に答える 2

1

http://jsfiddle.net/kE8GJ/のコードを使用して、目的を達成できます。コードの最も重要な部分は次の条件であることに注意してください。

var element;

if ($(this).hasClass("ui-li-link-alt")) {
    element = $(this);
}
else {
    element = $(this).closest('li.ui-li');
}

element
    .removeClass("ui-btn-up-c ui-btn-hover-c")
    .addClass("ui-btn-hover-e")
    .attr("data-theme", "e");

liこれにより、左側のボタンの要素または右側のボタンの要素のいずれかにテーマが正しく設定され、a最終的には、クリックした要素に新しいテーマを適用する効果があります。これが目標のようです。

あなたが見てTypeErrorいたことは、あなたの電話に関係していると思います.button()。jQuery Mobileリストビューの要素は通常ボタンとして扱われないため、このような呼び出しは問題を引き起こす可能性があります。のようなすべての呼び出し.trigger('create')は、レベルで行う必要がありlistviewます。


編集に応じて、テーマを正常に切り替えるには、クラスを手動で追加および削除する必要があります。それ以外の場合、古いテーマのクラスは引き続き存在します。たとえば、テーマeからcに切り替えると、ui-btn-up-eまたはは要素ui-btn-hover-e上にliとどまるため、テーマに戻らないように見えますcこれが実際に動作しているのは、http: //jsfiddle.net/wu86C/で確認できます。

最も重要なコードは、ここの2行目です(およびからcへの切り替えに相当しますe)。

var li = $(this).closest('li');
li.removeClass("ui-btn-up-e ui-btn-hover-e").addClass("ui-btn-hover-c");
于 2012-07-21T14:43:02.610 に答える
0

よくわかりませんが、jquery mobileではhtml構造はありませんが、「li内のタグ」はいくつかのdiv内にラップされています。

簡単に試してみると、事実上次のようになります。

$('#mylist a').click(function() {
        console.log($(this));        
        $('#li1').attr("data-theme", "e");
        alert( $('#li1').attr("data-theme"));
        $('#mylist').listview('refresh');
    });

あなたの最初のフィドルでは、これはテーマを変更します。

于 2012-07-21T14:39:27.970 に答える