0

問題は、一部のデバイスで特定のページの読み込みに 30 秒以上かかることです。jQuery 1.9.1、jQuery Mobile 1.3.1、および Phonegap 2.5.0 を使用しています。

チェックボックスの単一のリストとして値を列挙するページがあります。クリックイベントとタップホールドイベントがあります。これは、PC または iPhone 5 でうまく機能します。問題は、わずか 300 エントリで、iPhone 4 では 13 秒、2 年前の LG Optimus V では 33 秒以上かかることです。古いですが、これは非常識です。

そこで、HTML と CSS だけでこれを再現することにしました。ルック アンド フィールはダウンしていますが、偽のボタンを実際に「クリック」してチェックボックスをすばやくオンにすることができません。私が持っているものは正しく見え、3秒以内にどのデバイスにもロードされますが、チェックボックスをクリックしてから変更するには5秒かかります。DIV にはテキストの書式設定の問題があったため、要素のイベントを含むテーブルを使用しましたが、テーブルで販売されていません。

これが私のイベントコードです:

var $tr = $('#listDIV tr');

$tr.on( 'click', function(e) {
    $("#exclusionsCheckbox-" + $(this).prop('id') ).click();
    e.stopPropagation();
}); 

$tr.on( 'taphold', function(e) {
    shareActivity( $(this).prop('id'), $(this).prop('title') );     
    e.preventDefault();
    e.stopPropagation();
    return false;
});

これが私のテーブル行のサンプルです:

<tr id="1" title="Test-1">
  <td width="40">
    <div class="squaredThree">
      <input type="checkbox" data-role="none" id="exclusionsCheckbox-1" checked="">
      <label for="exclusionsCheckbox-1" onclick="return false;"></label>
    </div>
  </td>
  <td><h6>Test 1</h6></td>
</tr>

タップホールド イベントは完全に機能しますが、クリックが機能しないか、実際にチェックボックスの値を変更するのに約 5 秒かかります。

何かご意見は?

4

1 に答える 1

0

a.) s' とチェックボックスのイベント ハンドラーをオフにし、b.) クリック イベントから false を返し、c.) .click() の代わりに .prop() を使用して、騙す:

var $tr = $('#listDIV tr'),
    $inputs = $('#listDIV input');

// Turn off Event Handlers
$tr.off();
$inputs.off();

$tr.click(function(e) {
    if (e.target.type !== 'checkbox') 
    {
        var $checkbox = $("#exclusionsCheckbox-" + $(this).prop('id') );
        $checkbox.prop('checked', !$checkbox.prop('checked'));
        e.stopPropagation();
        return false;
    }
});

$tr.on( 'taphold', function(e) {
    shareActivity( $(this).prop('id'), $(this).prop('title') );     
    e.preventDefault();
    e.stopPropagation();
    return false;
});
于 2013-05-29T01:51:30.890 に答える