$('.hogehoge .hugahuga .piyopiyo div').on('click',function(){
  index = $('.hogehoge .hugahuga .piyopiyo div').index(this)
});

のように、長ったらしいセレクタを2度記述するのを回避する方法は

target = $('.hogehoge .hugahuga .piyopiyo div')
target.on('click',function(){
  index = target.index(this)
});

のように変数を定義するしかないですか?

$('.hogehoge .hugahuga .piyopiyo div').on('click',function(e){
  index = $(e.xxx).index(this)
});

のようにコールバック関数の内部から呼び出すことは不可能ですか?