gpt4 book ai didi

php - jQuery- e.target || e.srcElement 不在类里面工作

转载 作者:行者123 更新时间:2023-11-28 02:05:11 25 4
gpt4 key购买 nike

我有一个即时搜索,结果进入“instant-search”div。还有另一个 div“search-radio”,我在其中保留了选择搜索类别的选项。

我已经设置了一个删除结果的文档点击事件,但是当点击“instant-search”div 时结果也消失了。

我设置了一些e.target || e.srcElement 事件以防止结果在“即时搜索”div 单击时消失。

这在 Firefox 中完美运行,但在任何其他浏览器中都不起作用。

我完整的 jQuery 代码:

$(document).ready(function () {
$('#search-radio').css('display', 'block');
$('#search-input').keyup(function()
{
var searchIn = $("input:radio:checked").val();
var keyword=$(this).val();
$.get('../search/instant-search.php', {keyword: keyword, searchIn:searchIn}, function(data)
{
$('#instant-search').html(data);
});
$('#search-result').fadeIn(250);
});

$('#search-input').attr('autocomplete','off');
$('#search-input').attr('placeholder','Search');

$('#search-input').mouseenter(function(){$('#search-result').fadeIn(250);});
$('#search-input').mouseleave(function(){$('#search-result').fadeOut(250);});

$('#search-result').on('mouseenter mouseleave', function()
{
$('#search-result').stop();

$(document).on('click', function(e)
{
if(
((e.target.id || e.srcElement.id) != 'instant-search')
&& ((e.target.id || e.srcElement.id) != 'search-input')
&& ((e.target.id || e.srcElement.id) != 'search-result')
&& ((e.target.id || e.srcElement.id) != 'search-radio')
&& ((e.target.id || e.srcElement.id) !='instant-search-container')
&& ((e.target || e.srcElement).hasclass != 'instant-search')
&& ((e.target.id || e.srcElement.id) !='check-all'))
{
$('#search-result').fadeOut(250);
}
});

});

});

我的 HTML 代码:

    <div id="search-wrapper">
<form action="" method="get" id="search-form" >
<div id="search">
<input name="keyword" type="text" size="50" id="search-input" />
</div><!--end of search-->

<div id="search-result">
<div id="instant-search"></div><!--end of instant-search-->
<div id="search-radio">
<p>Search In:</p>
<ul>
<li><label><input name="search" type="radio" value="all" checked="checked" id="check-all" >All</label></li>
<li><label><input name="search" type="radio" value="Category2" >Category2</label></li>
<li><label><input name="search" type="radio" value="Category3" >Category3</label></li>
<li><label><input name="search" type="radio" value="Category4" >Category4</label></li>
<li><label><input name="search" type="radio" value="Category5" >Category5</label></li>
</ul>
</div><!--end of search-radio-->
</div><!--end of search-result-->
</form>
</div><!--end of search-wrapper-->

编辑:请参阅e.target || e.srcElement 不适用于 ul liradio input 仅在其他地方有效。

我希望它适用于所有浏览器。

请查看并提出任何可行的方法。

谢谢。

最佳答案

试试这个:

$(function() {
$('#search-radio').css('display', 'block');

$('#search-input').on({
keyup: function() {
var searchIn = $("input:radio:checked").val();
var keyword = this.value;
$.get('../search/instant-search.php', {
keyword: keyword,
searchIn: searchIn
}, function(data) {
$('#instant-search').html(data);
});
$('#search-result').stop().fadeIn(250);
},
mouseenter: function() {
$('#search-result').stop().fadeIn(250);
},
mouseleave: function() {
$('#search-result').stop().fadeOut(250);
}
}).attr('autocomplete', 'off').attr('placeholder', 'Search');

$('#search-result').on('mouseenter mouseleave', function() {
$('#search-result').stop();
});

$(document).on('click', function(e) {
var flag = true;
$.each($('*','#search-wrapper'), function(i,elm) {
if (e.target===elm) flag=false;
});
if (flag) $('#search-result').fadeOut(250);
});
});​

FIDDLE

关于php - jQuery- e.target || e.srcElement 不在类里面工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com