1

これは私を悩ませています。

200マージン以下の要素にoffset()。leftの不条理な値-32567を取得しています。offset()。topは正常に機能します。

コード:

(function( $ ) {

$.fn.draw = function( options ) {


    var settings = $.extend( {
        'width'  : null,
        'height' : null,
        'color' : '#000'
}, options);

return this.each(function() {        
    var o = settings;
    var obj = $(this);
    var offset = $(obj).offset();
    var c = o.color;
    var w = o.width;
    var h = o.height;
    var i = 0;
    var t, l = 0;

  $(obj).css('overflow','hidden');
   $(obj).css('position','relative');

  if(w != null){
      $(obj).css('width',w);
  }

  if(o.height != null ){
      $(obj).css('height',h);
  }




  $(obj).mousemove(function(e){
        var $mark = $('<div class="mark" id="mark'+i+'"/>');

        l = (e.pageX) - (offset.left);
        t = (e.pageY) - offset.top;
        $(this).append($mark);
        $("#mark"+i).css({
            'position' : 'absolute',
            'top' : t,
            'left' : l,
            'width' : '3px',
            'height' : '3px',
            'background' : c    
        });

        i++;
         }); 

});

};

})( jQuery );

私は、ブロック要素を描画パッドに変える楽しい小さなプラグを作成していました。これは、ボックスが0,0にあるページ全体でマウスの位置を使用しているときに機能しました。

これで、ブラウザのどこにでも配置できるようにしようとしているので、問題が発生します。

あなたはそれを見つけることができます(動作していません):http://hangerdev.com/zacksplayground/

私が首尾一貫していない場合は申し訳ありません。寝なきゃ。

4

1 に答える 1

4

$(document).ready()がない可能性があり、コンソールに$( "#box")。offset()。leftと入力すると、アラートに-32kと表示されていても、200が返されます。

于 2012-08-18T06:00:03.547 に答える