.trigger()a .on()

var $forms = $('form.vote');
$forms.submit(function(){
    return false;
});
$('.votebtn').on('click',function(){
    $this.closest('form').trigger('vote_now', [$(this).val()]);
});

$forms.on('vote_now',function(value){
    alert(value);
});

vote_now should be triggered and popup the value but something's wrong. What is it?

http://jsfiddle.net/6ZHy4/

1
jsfiddle.net でこの問題を再現できますか?
追加された 著者 JesseBuesking,
追加された 著者 Jürgen Paul,

2 答え

$this is improperly declared. Use $(this) instead on line 6

http://jsfiddle.net/PxkpC/

1
追加された
これは、配列にパラメータをラップしている場合、要素にアクセスすることができます(つまり、alert(value [0]))
追加された 著者 Sinetheta,

あなたは var $ this = $(this); を忘れてしまい、余分な引数はイベントオブジェクトの後に渡されます

JSFIDDLE DEMO

var $forms = $('form.vote');
$forms.submit(function(){
    return false;
});
$('.votebtn').on('click',function(){
    var $this = $(this); //declare variable
    $this.closest('form').trigger('vote_now', [$(this).val()]);
});
                                  //second argument, not first.
$forms.on('vote_now',function( e, value ){
    alert(value);
});
1
追加された
ああ、私のせいです、ありがとう!
追加された 著者 Jürgen Paul,
ここで何が間違っているかチェックできますか?ボタンにクラスを追加しています。 jsfiddle.net/XbSp6/1
追加された 著者 Jürgen Paul,
@ user1099531: disabled クラスが追加されていないためですか?これは、コールバック関数を addClass に渡そうとしているためです。これはコールバックを受けません。 (まあ、あなたがjQueryUIを読み込んでいればそうです。)ここに更新があります
追加された 著者 RightSaidFred,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript