2012-06-15 44 views
1

我現在有一個對象,volumeSlider,這是由其他兩個控件影響事件:反相的對象是如何連接到其他對象的事件

var volumeSlider = $('#VolumeSlider'); 

$('#MuteButton').on('mouseenter', function() { 
    volumeSlider.fadeIn('fast'); 
} 

$('#Controls').on('mouseleave', function() { 
    volumeSlider.fadeOut('fast'); 
} 

我想反轉這使得volumeSlider‘等待’用於MuteButton和Controls上的事件,而不是被告知回覆它們。這可能嗎?例如:

//Pseudo-Code: 
volumeSlider.on('#MuteButton.mouseenter'){ 
    this.fadeIn('fast'); 
}.on('#Controls.mouseleave'){ 
    this.fadeOut('fast'); 
} 

jQuery的http://api.jquery.com/bind/在這裏有用嗎?

+0

你在做什麼目前是不可能的,但你可以從'MuteButton的和Control's'事件觸發自定義事件,並聽取他們對'volumeSlider' –

+0

我不是真的很確定你爲什麼想要這樣做。你希望能夠通過你的事件處理程序中的'this'來引用'volumeSlider'嗎?然後在事件處理函數中使用['$ .proxy'](http://api.jquery.com/jQuery.proxy/)將其綁定到'volumeSlider'上下文。你想將所有這些元素分組到一個媒體播放器控件中嗎?然後,你應該考慮將所有內容都包裝在一個管理這些元素的jQuery插件中,綁定處理程序並公開諸如'play()'或'mute()'等方法來更新DOM。 –

回答

0

這裏有一個建議:

volumeSlider.on('dosomething', function(e) { 
    $(this).fadeIn('fast'); 
}); 

$('#MuteButton').on('mouseenter', function(e) { 
    volumeSlider.trigger('dosomething'); 
} 
相關問題