0

次のマークアップで data-global-id 値にアクセスしたいのですが、スコープが原因でこれを行う方法がわかりません。

例えば:

<div data-global-id="168" class="remove-as-favorite">remove as favorite</div>

$('.remove-as-favorite').on('click',function(){
  var global_id=$(this).data('global-id');
  // this works
  alert('here i am in something: ' + global_id);
  // this doesn't work
  event_handler.remove_as_favorite(); 
});


// want to access the data-global-id value in here; how to get access to this?
event_handler={
remove_as_favorite: function(){
    // how to get access to this here; assuming this refers to event_handler 
    var global_id=$(this).data('global-id');
    alert("here i am global_id:" + global_id);
  }
}

どうも

** 編集 1 ** ここに画像の説明を入力

4

3 に答える 3

0

このbruvを試してください:global_id http://jsfiddle.net/HK55Q/8/ または http://jsfiddle.net/HK55Q/11/で動作するデモ

コードでは、このようにローカル関数の外でグローバルIDの宣言を変更するだけですvar global_id = "";

さらに、コードはよりよく説明する必要があります。

よく読んでください:) グローバル値(必ずしもグローバル変数ではない)をjQueryに保存する方法は?

役に立てば幸いです。何か見逃した場合はお知らせください

コード

var global_id = ""; //<=== See here the global_id variable is outside your click and now you can bind it and can use it again.

$('.remove-as-favorite').on('click',function(){
  global_id=$(this).data('global-id'); //<== Do not redeclare it using var global_id
  // this works
  alert('here i am in something: ' + global_id);
  // this doesn't work
  event_handler.remove_as_favorite(); 
});


// want to access the data-global-id value in here; how to get access to this?
event_handler={
remove_as_favorite: function(){
    // how to get access to this here; assuming this refers to event_handler 
    var global_id=$(this).data('global-id');
    alert("here i am global_id:" + global_id);
  }
}
于 2012-06-30T02:50:41.963 に答える
0

より簡単な例は、次のように call を使用することです: </p>

$(function(){
    $('.remove-as-favorite').on('click',function(){
        var global_id=$(this).data('global-id');
        alert('here i am in something: ' + global_id);
        event_handler.remove_as_favorite.call({global_id:global_id}); 
    });


    event_handler = {
        remove_as_favorite: function() {
            alert("here i am global_id:" + this.global_id);
        }
    }
});​

call は JavaScript 関数であり、もちろん JavaScript をサポートするすべてのブラウザーと互換性があります ;)

http://jsfiddle.net/nTq97/でフィドルを確認してください。

于 2012-06-30T06:09:41.327 に答える
0

いくつかのことのいずれかを行うことができます。私が見ることができる最も簡単な方法は、global_id を引数として remove_as_favorite 関数に渡すことです。これにより、次のようになります。

$('.remove-as-favorite').on('click',function(){
  var global_id=$(this).data('global-id');
  event_handler.remove_as_favorite(global_id); 
});

// want to access the data-global-id value in here; how to get access to this?
event_handler={
remove_as_favorite: function(global_id){
    alert("here i am global_id:" + global_id);

} }

もう 1 つの方法は、"call" または "apply" 関数を使用することです。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Call

$('.remove-as-favorite').on('click',function(){
  var global_id=$(this).data('global-id');
  event_handler.remove_as_favorite.call(this); 
});
于 2012-06-30T03:04:44.597 に答える