глобальные переменные jquery не работают - PullRequest
1 голос
/ 28 февраля 2012

У меня проблемы со следующим кодом

$(document).ready(function() {  
var $selection = $('<div class="image-selection" />')
            .css({
                opacity : 0.5,
                position : 'absolute'

            })

var $content = $('.content');

$('img', $content).click(function(){selectItem($(this))});

function selectItem(itemSelected){      

    $image = itemSelected;

    $image.wrap($selection);

    $selection.width(150).height(150);

}

});

Я объявил $ selection в качестве глобальной переменной, но по какой-то причине, когда она находится внутри функции, ширина или высота не изменяются (размер выделения изменяется): если я сделаю следующее, это сработает:

var $selection = $('<div class="image-selection" />')
            .css({
                opacity : 0.5,
                position : 'absolute'

            })

var $content = $('.content');
$selection.width(150).height(150);

Я буду очень признателен, если кто-то поймет, что происходит, и может сказать мне, что я пытался понять это, но я действительно изо всех сил. Большое вам спасибо

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Когда вы оборачиваете $ image с помощью $ selection, div теперь является новым объектом (копией $ selection) в DOM, а не фактическим отключенным элементом в памяти. Попробуйте перейти на это:

$image.wrap($selection);
$image.parent('div.image-selection').width(150).height(150);
1 голос
/ 28 февраля 2012

Вы не объявляете его как глобальный - вы объявляете его в рамках функции, выполняемой при document.ready. В идеале, ставьте var $selection перед document.ready и удаляйте var, когда вы ссылаетесь на него внутри этой функции. Это сделает его глобальным.

...