2013-10-01 4 views
0

В JQuery кажется, что $ (this) работает только локально.

дают быстрый пример:

$(".someClass .type1").click(function(){ 
    $(".someClass .type1").html("<img src='image/2.png'>"); 
    $(this).html("<img src='images/img.png'>"); 
}); 

$(".otherClasses").click(function(){ 
    $(".otherClasses .type1").html("<img src='image/2.png'>"); 
    $(this).html("<img src='images/img.png'>"); 
}); 

В идеале, я хотел бы написать такую ​​функцию:

function changeImg() { 
    $(this).html("<img src='images/img.png'>"); 
} 

А затем вызвать changeImg() под функциями JQuery клик как:

$(".someClass .type1").click(function(){ 
     $(".someClass .type1").html("<img src='image/2.png'>"); 
     changeImg(); 
}); 

Однако, таким образом, $ (this) будет 'undefined' вместо того, который больше нажат. Есть ли способ сделать его доступным как глобальная переменная?

Спасибо!

ответ

3

Pass this в качестве параметра ваши функции:

function changeImg (el) { 
    $(el).html("<img src='images/img.png'>"); 
} 

$(".someClass .type1").click(function(){ 
     $(".someClass .type1").html("<img src='image/2.png'>"); 
     changeImg(this); 
}); 
+0

+1 Вы были на 4 секунды быстрее меня. –

1

Использование

changeImg(this); // pass this here 

вы код становится

$(".someClass .type1").click(function(){ 
      $(".someClass .type1").html("<img src='image/2.png'>"); 
      changeImg(this); // pass this here 
    }); 
function changeImg (elem) { 
    $(elem).html("<img src='images/img.png'>"); 
} 
Смежные вопросы