2013-05-22 3 views
-1

Одна вещь, о которой я думаю, я никогда не узнаю о переменных, это следующее.глобальные переменные в разных функциях

У меня есть функция парения, как это:

var $thisId = $(this).attr('id'); 
function bindHover() { 
    $("#wrapper img").hover(function() { 
     console.log($thisId); 
    }); 
} 

console.log дает мне undefined. Когда im объявляет переменную между функцией, она работает. Теперь вопрос, если я хочу $(this).attr('id') во всех различных функциях, которые есть у меня в js. Что я могу сделать, что мне не нужно писать новую переменную в каждой функции?

+0

сделать переменную глобальную ее $ .variable не переменные $ –

+0

Назначают его в области верхнего объекта уровня в приложении –

+0

'$ (это) .attr ('ID');' может также записывается как 'this.id'. – hjpotter92

ответ

2
var $thisId = $(this).attr('id'); 

Эта линия будет побежал раз, $thisId будет присвоено значение, и код будет двигаться дальше.

Итак, когда вы вызываете функцию bindHover, и назначается обработчик, она будет использовать любое значение $thisId, если оно было назначено.

Вы должны получить id изнутри обработчика, так что this - элемент, который вы хотите.

function bindHover() { 
    $("#wrapper img").hover(function() { 
     //console.log($(this).attr('id')); 
     console.log(this.id); // it's shorter :-) 
    }); 
} 
+0

хорошо, но что делать, если у меня много элементов и я хочу, чтобы мой код оставался маленьким и не хотел писать' $ (это). attr ('id') 'около 25 раз! – supersize

+1

@TedMosby в этом случае вы можете написать 'this.id' .. Его короче .. :) – PSL

+0

ладно спасибо, но хотя бы один вопрос! Я всегда думал объявить свою переменную как «var $ blabla», а не «var blabla», не имеет никакой разницы? верный? – supersize

1
var $thisId; // create the var in global space 
function bindHover() { 
    $("#wrapper img").hover(function() { 
    $thisId = $(this).attr('id'); // set global var in local space 
    console.log($thisId); // global var displays local $(this) id 
    }); 
    console.log($thisId); // global var retains locally defined value until set again 
} 
Смежные вопросы