在触发之前绑定元素上的事件

时间:2011-09-21 09:48:17

标签: javascript jquery event-handling bind

我有一个搜索结果div,如果用户点击它之外的任何地方,我想隐藏它。它不是搜索条件div的子项。 我遇到的问题是.show()似乎根本没有触发。我原以为.hide()只会在初次点击搜索按钮后触发。显然,当搜索结果div关闭时,我.unbind()事件。

有点难过这个,所以任何帮助都会非常感激。

以下是一些示例代码。

function search(){
    $('#criteria').bind('click',function(){$('#results').hide();});
    $('#results').show();
    $('#results').html('some html from ajax call');
}

<div id=criteria>
    <input id=criteria1 /><input id=criteria2 /><input id=criteria3 />
    <!-- a whole page of input elements and a ajax lookup -->
    <input type=text id=lookup /><input type="button" onclick="search()" value="search" />
</div>
<div id=results></div>

1 个答案:

答案 0 :(得分:0)

如果我理解你,你需要这样的东西

<script>
$(document).bind('click',function(){$('#results').hide();});

function search(e){    
  $('#results').show();
  $('#results').html('some html from ajax call');
  e.cancelBubble = true;
}
</script>

<div id=criteria>
<input id=criteria1 /><input id=criteria2 /><input id=criteria3 />
<!-- a whole page of input elements and a ajax lookup -->
<input type=text id=lookup /><input type="button" onclick="search(event)" value="search" />