質問

次のjQueryは、ほとんどのデスクトップブラウザーで正常に動作しますが、AndroidおよびiPhoneブラウザでは失敗します。

$('#submit_event').live('click', function() {

    if ($("#event_name").attr("value") != "" && $("#event_details").attr("value") != ""){
        sendEvent($("#event_name").attr("value"), $("#event_details").attr("value"));
        $('#response_container').append("<div class='event_title'>"+$("#event_name").attr("value")+"</div><div class='event_details'>"+$("#event_details").attr("value")+"<div class='comment'>Comment</div><textarea class='comment_area'></textarea><div id='post_comment'>Post</div></div>");
    }
});

#submit_eventは、divの単なるIDです。クリックすると、デスクトップブラウザで機能を実行しますが、AndroidやiPhoneでは機能しません。

よろしく、

テイラー

役に立ちましたか?

解決

より効率的なコードを試すことができます:

$('#submit_event').live('click', function() {

    var eName = $("#event_name").attr('value');
    var eDetails = $("#event_details").attr('value');

    if (eName && eDetails) {
        sendEvent(eName, eDetails);
        $('#response_container').append("<div class='event_title'>" +
            eName + 
            "</div><div class='event_details'>" +
            eDetails + 
            "..."
        );
    }
});

他のヒント

OK私は私の答えを見つけました、

モバイルサファリのバグです。

必要なのは、ライブ関数にバインドする要素にonclick = ''を追加するだけで、機能します。

はい。LiveイベントはTDのような要素では機能しません。アンカータグ、ボタンなどのHTML要素で動作します。したがって、jQueryのliveイベントを使用してクリックイベントを適用する場合は、最初にonclick = ""属性をTD要素にjquery .attrメソッドを使用して追加する必要があります。 TD要素でイベントをバインドするライブイベント。詳細については、以下のブログをご覧ください

http://skillfulness.blogspot.com/2010/11/workaround-for-jquery-live-event.html

JQuery Mobileも使用している場合は、試してみたいと思うかもしれません

$('#submit_event').live('tap', function() {}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top