2017-06-22 54 views
0

元素刪除類:無法從使用jQuery

<div class="row"> 
    <img src="image.png" class="download-image regular-image" /> 
<div class="options"> 
    <p>download</p> 
</div> 

<img src="image.png" class="download-image regular-image" /> 
<div class="options"> 
    <p>download</p> 
</div> 

和下面的代碼來處理它(它改變了形象,基本上它是一個活躍的狀態實現):

​​

此代碼運行良好,但通過單擊元素刪除.current類時遇到問題。 g雖然我通過點擊頁面的任何地方像這樣實現的:

$("html").click(function() { 
    $(".options").hide(); 
    $(".download-image").removeClass('current').attr("src", "image.png"); 
    $(".download-image").hover(function() { 
     $(this).attr("src", "image2.png"); 
    }, function() { 
     $(this).attr("src", "image.png"); 
    }); 
}); 

這一塊不正是我想要的,但我也想有活動圖像相同的行爲了。我的嘗試: 1.添加.currenthtml點擊事件 2.創建相同的功能,但對於.current類 3.使用.on('click', '.current', function() 4.去就像這樣:以上

$('.current').click(function() { 
    $(this).removeClass('current'); 
} 

沒有爲我工作。我錯在哪裏?任何幫助,將不勝感激。

+2

偵聽器的回調函數中的this關鍵字附有該事件。你想要的HTML元素。嘗試這個。 $('。current')。on('click',function(e){$(e.target).removeClass('current');}在移動設備上,atm格式是ass –

+0

你可以驗證'$ )'解決了使用開發人員工具的問題?我認爲我前一陣面臨同樣的問題,在這種情況下'$(this)'不是解析爲'img'標籤,而是周圍的'div'。 – DotBert

+1

@DotBert it指向不完全是他想要的事件 –

回答

2

偵聽器的回調函數中的this關鍵字具有附加的事件對象。你想要的HTML元素。您可以通過註銷回調內部的值並查看對象來看到這一點。試試這個來獲取HTML元素:

$('.current').on('click', function(e) {  
     $(e.target).removeClass('current'); 
} 

記下我給回調的參數。我相信this.target實際上可能是相同的對象,但我在移動ATM,所以無法驗證。你可以通過console.log(this)註銷值。聲明

+0

不幸的是,它並沒有爲我工作,我可以通過console.log獲取相應的元素,我甚至可以通過控制檯像$('。current')。removeClass('current')'但它不起作用在我的點擊事件中,無論是在cosole還是在代碼中 –

0

解決方案非常明顯,我感到羞恥我沒有試過它,然後發佈我的問題。我用.toggleClass()方法,現在我的click()事件是這樣的:

$(".download-image").click(function (event) { 
    event.stopPropagation(); 
     $(this).next().toggle(); 
     $('.download-image').removeClass('current').attr('src', 'image.png'); 
     $(this).toggleClass("current").attr('src', 'image2.png'); 
     $(document).delegate('.current','mouseover',function() { 
      $(this).attr("src", "image2.png"); 
     }); 
     $(document).delegate('.current','mouseout',function() { 
      $(this).attr("src", "image2.png"); 
     }); 
    }); 

請注意,我用老的jQuery,如果你使用v3+,你應該.on()取代.delegate()方法,在註釋中下文稱。