2011-12-21 122 views
0

我有一个宽度为308px的div。在这个div中,我有一个缓冲区(可以是0到308之间的任何长度)。如何基于div中的点击计算位置

该div用于显示播放音轨的进度。音轨的持续时间以毫秒为单位。

我想让用户根据在div中的点击来改变轨道中的位置。但是我的数学全都是错的。

我目前拥有的是:

var pos = e.pageX - $(this).offset().left; // returns the position of the click in the div (0 to 380) 
var relpos = parseInt(308, 10)/parseInt(pos, 10); 
var newpos = parseInt(duration, 10)/parseInt(relpos, 10); 

如何计算基于股利的点击位置的新位置?

如果要测试它,我已经设置了fiddle

回答

3

首先,308实际上是您应该替换的缓冲区宽度,如果您需要调整大小。 的代码是:

(function($) { 
    var duration = 138736; 
    $(document).on('click', '.buffer', function(e) { 
    var pos = e.pageX - $(this).offset().left; 
    var relpos = duration*pos; 
    var newpos = relpos/308; 

    $('.test').html(pos + '/' + newpos + '/' + duration); 
    }); 
    })(jQuery); 

如果308是持续时间比 POS是X,X =(POS×持续时间)/ 308

+0

我选择不注意上学。谁需要数学呢? ;) 谢谢! – PeeHaa 2011-12-22 00:26:02