2013-01-10 52 views
0

這個我敢肯定,有一個非常簡單的答案:jQuery的,如果已經被點擊

我有一個搜索表單,當你專注在表單上其他按鈕的形式下彈出,讓你過濾選擇,我試圖讓這些選項消失的搜索表單模糊不清。目前,當你點擊其中一個選項時,它會關閉選項菜單,所以我正在尋找一種方法來測試這些選項是否被點擊。下面是代碼,我拿出這麼遠:

$("#search").blur(function(){ 
     $("#selector").click(function(){ 
      return false; 
     }); 
     $("#selector").toggle(); 
    }); 

也試圖做類似下面的產生失敗結果:

var is_clicked = true; 
    $("#selector").click(function(){ 
     is_clicked = false; 
    }); 
    console.log (is_clicked); // always returns true 
+0

將事件更改爲'mouseover'和'mouseout' – diEcho

+0

這是針對OP中未提及的移動設備 – Peter

+0

所做的。我已經更新了標籤 – diEcho

回答

2

看到這個:http://jsfiddle.net/gP8Jg/1/

$("#search").blur(function(){ 
    $("#selector").mousedown(function(){ 
     return false; 
    }); 
    $("#selector").toggle(); 
}); 
$("#search").focus(function(){ 
    $("#selector").fadeIn(); 
}); 

嘗試使用mousedown()代替click()

+0

這大部分適用。如果您點擊搜索,然後立即點擊#選擇器,它仍然會在第一次切換。它完成後,它雖然工作。任何想法,爲什麼它這樣做? – Peter

0

這總是返回true,因爲執行的console.log同步:

var is_clicked = true; 
$("#selector").click(function(){ 
    is_clicked = false; 
    // console.log(is_clicked); // will yeild false 
}); 
console.log (is_clicked); // always returns true 

我不太明白你在這裏做什麼:

$("#search").blur(function(){ 
    $("#selector").click(function(){ 
     return false; // Cancels the click 
    }); 
    $("#selector").toggle(); // Slides vissible/hidden $('selector') 
    // There is no code here that checks state of buttons or any other element 
    // on the page. 
}); 

切換在點擊一個元素在它自己的點擊處理程序進行:

$('#selector').click(function (event) { 
    $('#selector').toggle(); 
}); 
+0

好吧,合併這兩個例子,你如何去執行'$(「#selector」)。toggle()'當選擇器本身沒有被點擊時? – Peter

+0

@彼得我用你的要求更新了答案。 –

0

,如果您需要點擊一個選項後關閉選項菜單,延時切換,例如。使用js setTimeout()並捕獲選項元素本身的點擊

相關問題