2014-11-21 166 views
0

我有一個關於收聽第二次點擊的問題, 所以我在這裏2 Div和1輸入,並通過每次點擊 每個元素改變每個元素的背景顏色。JavaScript第二次點擊

我想點燃第二次點擊,所以如果我點擊兩次相同的元素, 比shuld顯示警報。

的JavaScript:

var divTag = document.getElementsByTagName("div"); 

for (var i = 0; i < divTag.length; i++) { 
    if (divTag[i].tagName == "DIV" || divTag[i].tagName == "div") { 
     if (divTag[i].addEventListener) { 
      divTag[i].addEventListener('click', callback,false); 
     } 
     else if (divTag[i].attachEvent) { 
      divTag[i].attachEvent('on' + 'click',callback); 
     } 
    } 
} 

function callback(e) { 
    e = e || window.event; 
    var target = e.target || e.srcElement; 
    target.style.backgroundColor = "green"; 
    e.stopPropagation(); 
} 

HTML:

<div id="old"> 
    <input style="margin: 10px;" type="textbox" /> 
    <div id="new"></div> 
</div> 

CSS:

#old { 
    width:200px; 
    height:200px; 
    background-color:yellow; 
} 
#new{ 
    width:20px; 
    height:20px; 
    background-color:lightblue; 
} 

http://jsfiddle.net/v6d6veyv/

你能幫助我嗎? 在此先感謝。

+0

通過初始化一個變量,並檢查每次點擊它以前被點擊過或沒有。 看看這[JSFiddle鏈接](http://jsfiddle.net/v6d6veyv/5/) – 2014-11-21 16:23:05

回答

0

如果你的意思是雙擊,就可以使用dblclick代替click

divTag[i].addEventListener('dblclick', callback,false); 
+0

感謝您的答案,但我不想點擊一個接一個,所以我點擊一個元素,而不是例如,我等了一會兒,比我再次點擊。 – aldimeola1122 2014-11-21 16:12:29

0

你爲什麼不嘗試使用ondblclick事件。可能會更容易一些。附加到element.addEventListener("dblclick", /* whatever here */)

0

你可以添加一個屬性到目標選擇器,即data-count =「0」,然後當你點擊元素監聽這個,然後可能增加值爲1,這樣下次你點擊你可以檢查值是0還是1,然後根據需要做任何你需要做的事情?

希望是有道理/幫助, 盧

0

不知道這是最好的辦法..但是你可以實現一個計數器..

var counter = 0; 
if (counter %2 === 0) {//do stuff} 

我做到了,在這裏你...

http://jsfiddle.net/n516avaf/

你可能會想,雖然改了一下,但希望這有助於。

0

如果你想檢測到點擊是否又是在相同的元素,那麼你可以修改你的函數以下列方式:

var target = ''; // Make this variable global. 

function callback(e) { 
    e = e || window.event; 
    if ((target == e.target) || (target == e.srcElement)) { //Check whether the event's target is same as the previous. 
     alert('hello'); 
    } else target = e.target || e.srcElement; 
    if (prevDiv) { 
     prevDiv.style.backgroundColor = ""; 
    } 
    target.style.backgroundColor = "green"; 
    prevDiv = target; 
    e.stopPropagation(); 
} 

演示:http://jsfiddle.net/v6d6veyv/1/如果你想通過DoubleClick

,然後只是聽dblclick事件

+0

謝謝,那就是,我在找什麼;) – aldimeola1122 2014-11-21 16:15:04

0

我假設你想點擊div時觸發警報是相同的..所以這應該做的工作:

if(prevDiv === target) 
     alert('same div'); 

結果:

function callback(e) { 
    e = e || window.event; 
    var target = e.target || e.srcElement; 
    if(prevDiv === target) 
     alert('same div'); 
    if(prevDiv) { 
     prevDiv.style.backgroundColor = "";   
    } 
    target.style.backgroundColor = "green"; 
    prevDiv = target; 
    e.stopPropagation(); 
} 
使用可變 numberOfClicks和遞增它每次被點擊的股利作品以及

jsfiddle

0

怎麼樣簡單的東西像...

HTML:

<span class="clickable">Click me!</span> 

JS:

$('.clickable').on('click', function() { 
    if(this.clicked){ 
     alert('oh hai!'); 
     return; 
    } 

    this.clicked = true; 

    $(this).text('Click me again!'); 
}); 

小提琴:http://jsfiddle.net/1ny7o6o9/

0

通過初始化一個變量並檢查它以前是否被點擊的每一次點擊。 檢查了這一點 JSFiddle Link