2011-08-16 58 views
1

我有一個搜索建議框,當搜索文本框失去焦點時我會隱藏。這很好,除了當我點擊其中一個建議時,該建議的點擊事件不會觸發。JS上的jQuery隱藏元素可以阻止其他事件被觸發

searchText.focusout(function() { $("#search-suggestions").hide(); }); 

我也試過:

searchText.focusout(function() { $("#search-suggestions").css("visibility", "hidden"); }); 

我想註釋掉的代碼,無焦點和單擊事件隱藏然後工作得很好。

(基本上,模糊事件發生之前,建議點擊可以註冊,這樣我試圖點擊該元素是不是當clicm並登記在屏幕上)

這裏的Click事件代碼:
//阿賈克斯負載

$("#search-suggestions").find("a").click(function() { alert("hi"); }) 

我也試過在服務器上渲染此之後調用,但它也失敗了:

<a href="javascript: alert('hi')">Search Suggestion</a> 

如果任何人有任何建議,我將不勝感激。謝謝!

+0

codez。我們需要codez! – JAAulde

+0

這裏是代碼: searchText.focusout(function(){$(「#search-suggestions」)。hide();}); – badBadCoder

+0

發佈您的點擊處理程序代碼 – AlienWebguy

回答

1

你可以嘗試定義是這樣的:

//this goes where you first binding focusout handler 
searchText.focusout(onFocusOut); 

//this is a usual function 
function onFocusOut() { 
    $("#search-suggestions").hide(); 
} 

//this could be defined after you draw the search-suggestions control 
$("#search-suggestions").hover(function() { 
    //this is hover in handler; unbind focusout from searchText 
    //something like that: 
    $("#searchText").unbind('focusout', onFocusOut) 
}, function() { 
    //this is hover out handler; bind focusout to searchText 
    //something like that: 
    $("#searchText").bind('focusout', onFocusOut) 
}); 

你也可以使用livehttp://api.jquery.com/live/)來定義懸停處理程序#search-suggestions,這依賴於你所需要的。

這會讓您的搜索建議在點擊時保持可見。在點擊處理程序中,您可以隱藏它們。

+0

更多的代碼比我想要的,但它的工作,謝謝! – badBadCoder

1

試着讓它看不見。

變化$('#my_search_box').hide();$('#my_search_box').css('visibility','hidden');

如果你周圍的需要,就好像搜索框不見了採取行動DOM元素,你可以給它指定一個絕對位置爲好。

+0

'.hide()'不會從DOM中刪除元素。它將它設置爲'display:none;'。另外,我們不知道OP究竟在做什麼來「隱藏」元素,無論如何。 – JAAulde

+0

對,JQuery和CSS都把它當作不存在。抱歉,這個令人困惑的建議。 – AlienWebguy

+0

啊,我明白了。沒問題。 – JAAulde

0

嘗試使用.css('visibility','hidden')而不是使用display:none的.hide。

+0

我已經嘗試.css('知名度','隱藏') – badBadCoder

相關問題