Это может быть странный вопрос. В любом случае, я работаю над плагином jQuery, и это полезный кусок кода для этого вопроса, обратите внимание, что это еще не все;):
Javascript:
(function($){
$.fn.newPlugin = function(){
var ranges = [], selectableRange = this;
function init(){
selectableRange.live('mousedown', function(){
selectableRange.live('mouseup', function(){
addRange(Math.random(), Math.random());
selectableRange.die('mouseup');
});
});
}
function addRange(a, b){
// console.log(ranges);
ranges.push({start: Math.min(a,b), end: Math.max(a,b)});
console.log(ranges);
}
return { init: init };
};
})(jQuery);
$(document).ready(function(){
var instance = $('#element').newPlugin();
instance.init();
});
HTML:
<div id="element" style="width:200px;height:200px;background:grey;"> </div>
То, что он делает, кажется довольно бесполезным; в любом случае, каждый раз, когда кто-то кладет свою мышь вниз, а затем вверх на элемент, новый объект добавляется в конец ranges
. К сожалению, в моей консоли массив диапазонов содержит только один объект, независимо от того, сколько раз нажали на $('#element')
.
Я попытался выяснить, что происходит, и раскомментировал строку console.log(ranges);
, прежде чем объект был помещен в конец массива диапазонов. Тогда, как ни странно, это сработало. Массив диапазонов вырос ...
Может кто-нибудь сказать мне, почему это .push
работает только тогда, когда ranges
используется раньше?