2

このプラグインの使用:http ://www.fyneworks.com/jquery/star-rating/#tab-Testing

ラジオボタンからIDを取得する簡単なコールバック関数があります。

<input type="radio" class="auto-submit-star {split:2}" id="myid" value="1" />

$('.auto-submit-star').rating({ 
  callback: function(value, link){ 
   alert($(this).attr('id'));
  } 
});

これは正常に機能しますが、ユーザーがキャンセルボタンをクリックすると、そのIDを読み取ることができません。

jsでは、キャンセルボタンは動的に追加されると思います:

control.cancel = $('<div class="rating-cancel"><a title="' + control.cancel + '">' + control.cancelValue + '</a></div>')

次のようにIDを追加すると、次のようになります。

control.cancel = $('<div class="rating-cancel"><a id="someid" title="' + control.cancel + '">' + control.cancelValue + '</a></div>')

どうすればIDを読み取ることができますか?これは未定義です。クラスを設定して$('。myclass')。attr('id')を使用できますが、1ページに複数の評価があるため、「this」に似たものが必要になります。または、キャンセルボタンが対応するラジオボタンのIDを取得することは可能ですか?

4

4 に答える 4

2

が未定義の場合はid、キャンセルボタンをクリックしたことがわかります。を設定する必要はありませんid

if (typeof $(this).attr('id') == 'undefined') {...}
于 2009-10-11T16:37:49.663 に答える
0

これはプラグインのバグです。ここに修正があります。

于 2011-12-09T04:17:08.400 に答える
0

ありがとうライアン!私のために働いた評価キャンセルクラスにクリックイベントを追加しました

jQuery(".rating-cancel").click(function() {
        var name = jQuery(this).parent().next().attr('name');
        if (name != "") {
           //added the custom code here to handle rating cancel event
        }
      });
于 2010-06-01T09:37:50.220 に答える
0

OK Roger - 同じ問題に直面していたので、これを見つけました。とりあえず解決した方法はこちら。プラグインが将来的に修正されることを願っています。私の感覚では、この時点で問題を解決する必要はありませんが、他の人の助けになるかもしれません. 明らかに、これは DOM 要素の構造に依存しているため、あまり洗練されたソリューションではありません。

//RYAN OBEROI: A big hack, since the cancel callback does not have the appropriate information
name = $(this).parent().next().attr('name')

// click callback, as requested here: http://plugins.jquery.com/node/1655
if(control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0], name]);// callback event
于 2009-11-16T18:11:10.283 に答える