2012-07-01 50 views
7

我有一個div,當用戶點擊div時,應調用一個函數。當用戶點擊其他東西(除了這個div之外的其他東西)時,應該調用另一個函數。是否可以使用JS或jQuery爲DIV編寫onFocus/lostFocus處理程序?

所以基本上我需要有與此相關的DIV的onfocus()和LostFocus()函數調用。它可以在JavaScript中甚至在jQuery中使用嗎?

謝謝。

+0

爲什麼如果你想打電話Click事件的功能,你需要的onfocus? –

+0

@Mohammad,是的,我可以使用Click事件而不是使用onFocus。但問題是,我需要獲得lostFocus事件或類似的事情。任何想法? – Ivin

+0

請參閱下面的答案。 –

回答

16

在這裏,我創建你想要http://jsfiddle.net/kPbfL/1/

什麼工作演示您需要添加tabindex屬性div

標記:

<div id="mydiv" tabindex="-1"></div> 

的Javascript

$("#mydiv").focusin(function() { 
  $("#mydiv").css("background","red"); 
}); 
$("#mydiv").focusout(function() { 
  $("#mydiv").css("background","white"); 
}); 

CSS

#mydiv{ 
width : 50px; 
    height:50px; 
    border : 1px solid red; 
}​ 
​ 
+1

使用'jsfiddle'僅供演示之用。寫您的整個代碼在問題本身。 – Jashwant

+0

@Mohammad,Jashwant非常感謝這個問題的答案傢伙。我看到的jsfiddle演示。正是我想要的。但不幸的是,這種方法心不是在我的代碼中工作,它說=> $(「#mydiv」),focusin不是函數。 – Ivin

+1

@Orbb,試試這個[http://jsfiddle.net/kPbfL/3/](http://jsfiddle.net/kPbfL/3/) –

5

焦點不要DIV工作:http://api.jquery.com/focus/

也很好看:jquery : focus to div is not working

If you want to focus a div or anything normally can't be focused, set the tag's tabindex to -1 first. 
eg: $("div#header").attr("tabindex",-1).focus(); 
+0

您的方法工作,我得到焦點()工作。現在我怎麼能實現lostFocus()? blur()不起作用。 – Ivin

+0

@Orbb高興它幫助:在這裏,你應該採取的代碼失去焦點/從這裏集中了:http://stackoverflow.com/questions/3088738/jquery-need-alternative-to-focusout':)' –

+0

過冷!我不知道'tabindex'黑客:) – Jashwant

-1

肯定。

$("#your-div-id").focusin(function() { 
    // code here 
}); 

$("#your-div-id").focusout(function() { 
    // code here 
}); 
+0

它沒有工作。我按照你的建議嘗試過。然後我嘗試了bind/live,因爲div是動態生成的。但不是! :( – Ivin

0

,如果這個解決方案適合您的網頁,但你可以在使用JQuery不知道()附加一個單擊事件的身體元素,並將其委託給孩子div的。然後在你的事件處理程序中,測試id屬性和句柄;是這樣的:

$(body).on("click", "div", function (evt) { 
    if ($(this).attr("id") == "innerDiv") { 
      handle inner div click here 
    } else { 
      hanlde out div click here 
    { 
} 

希望這有助於...

相關問題