0

http://dev.jtsage.com/jQM-DateBox2/demos/fullopt.htmlで jquery モバイル datebox を使用しています。特に、http://dev.jtsage.com/cdn/datebox/ でcalbox オプションを使用しています。1.1.0/jqm-datebox-1.1.0.mode.calbox.js

ある日をクリックしたときにトリガーされるクリック イベントを傍受し、何かカスタムを行う必要があります (たとえば、その日付の背景色を変更するなど)。これを行う最善の方法は何ですか?要素 $('div.ui-datebox-griddate.ui-corner-all.ui-btn-up-d') のクリック イベントを登録しようとしましたが、機能していないようです。

私は backbonejs を使用しており、coffeescript のクラスの関連部分は次のようになります (SimpleView は Backbone.View を拡張します)。

class A extend SimpleView
  ....
  events: {    
    'click div.ui-datebox-griddate.ui-corner-all.ui-btn-up-d': "clicked"  
  }  

  clicked: (event) ->
    console.log 'clicked'

上記は機能しません。さらに、クリックイベントを作成するのは内部クラス名に依存するため、これはおそらく私が望むことを行うための最良の方法ではありません。

前もって感謝します!

4

2 に答える 2

2

Datebox は、「datebox」と呼ばれるカスタム イベントをトリガーします (十分に創造的です)。このイベントは、1 日がクリックされると 3 回発生しますが、さらに重要なことは、クリックされた日の詳細を含む 2 番目の引数をイベントに渡します。

これを試してみてください:

....
events: {
    'datebox' : 'clicked'
},

clicked: function(e, eventDetail) {
    // Of the three event triggers, "method" varies, so I checked for "set"
    if (eventDetail.method == "set") {
        var jsDateObj = eventDetail.date;
        console.log(jsDateObj);
    }
}
....
于 2013-02-16T04:48:19.543 に答える
0

1つの方法を考え出したと思います。「日」要素でクリックを作成する代わりに、カレンダーが添付されている入力日付フィールドでクリックを作成します。そこからコンテンツを取得し、それをフィルターとして使用して正しい暦日の要素に到達し、その時点で CSS スタイルを使用して必要なことを行うことができます。関連するコード部分を以下に示します...

class A extend SimpleView
  ....
   events: {    
     'change #mydate': "clicked"  
   }   
   clicked: (event) ->
     t = $(event.target)
     day = t.data('datebox').theDate.getDate()
     dayFilter= "div.ui-datebox-griddate.ui-corner-all:contains('#{day}')"
     $(dayFilter).filter( ->
       thisDay = parseInt($(@).text())
       if thisDay == day
         # do your css magic here
     )
于 2013-02-15T14:19:38.050 に答える