jQuery选择器:不是这个div,也不是那个div
我正在尝试创建一个jQuery click函数,当您单击除该div之外的任何内容时,该函数将关闭该div。我的问题是,该div中有一个搜索字段和另一个按钮,如果您单击它们,则需要保持打开状态 我目前的职能是:jQuery选择器:不是这个div,也不是那个div,jquery,css,click,Jquery,Css,Click,我正在尝试创建一个jQuery click函数,当您单击除该div之外的任何内容时,该函数将关闭该div。我的问题是,该div中有一个搜索字段和另一个按钮,如果您单击它们,则需要保持打开状态 我目前的职能是: $("*:not(#header)").click(function() { $('#header').slideUp({ duration: 550, easing: 'easeOutExpo' }); }); 我还想说“而且不是”#c
$("*:not(#header)").click(function() {
$('#header').slideUp({
duration: 550,
easing: 'easeOutExpo'
});
});
我还想说“而且不是”#categoryMore“也不是”#headerSearch“,但我一直使用的语法不起作用
$("*:not(#header, #categoryMore, #headerSearch)")
及
有什么想法吗?非常感谢你的帮助 您可能想使用jQuery插件:
使用jQuery外部事件,您可以
绑定到将发生的事件
仅当特定的
“始发”事件发生在外部
有问题的因素。例如
你可以点击外面,双击
外面,鼠标移到外面,集中注意力
外部(以及超过十个默认值)
“外部”事件)。另外,如果是外部
默认情况下未提供事件,
你可以很容易地定义你自己的
您可能需要使用jQuery插件:
使用jQuery外部事件,您可以
绑定到将发生的事件
仅当特定的
“始发”事件发生在外部
有问题的因素。例如
你可以点击外面,双击
外面,鼠标移到外面,集中注意力
外部(以及超过十个默认值)
“外部”事件)。另外,如果是外部
默认情况下未提供事件,
你可以很容易地定义你自己的
编辑: 下面是一个可以测试的示例 我在示例中使用了
slideToggle()
,因此您可以更轻松地多次测试它
在关闭
#标题的文档上放置一个处理程序
然后在#header
上放置一个处理程序,该处理程序执行事件.stopPropagation()
,以防止在文档内部单击时事件冒泡到文档
$(document).click(function() {
$('#header:visible').slideUp({
duration: 550,
easing: 'easeOutExpo'
});
});
$('#header').click(function( event ) {
event.stopPropagation();
});
请注意,如果页面上的任何其他元素具有使用event.stopPropagation()或返回false的单击处理程序
,事件不会出现在文档中,并且您的#标题
不会关闭
在这种情况下,您需要直接在该处理程序中处理它。编辑:
下面是一个可以测试的示例
我在示例中使用了slideToggle()
,因此您可以更轻松地多次测试它
在关闭#标题的文档上放置一个处理程序
然后在#header
上放置一个处理程序,该处理程序执行事件.stopPropagation()
,以防止在文档内部单击时事件冒泡到文档
$(document).click(function() {
$('#header:visible').slideUp({
duration: 550,
easing: 'easeOutExpo'
});
});
$('#header').click(function( event ) {
event.stopPropagation();
});
请注意,如果页面上的任何其他元素具有使用event.stopPropagation()或返回false的单击处理程序
,事件不会出现在文档中,并且您的#标题
不会关闭
在这种情况下,您需要直接在该处理程序中处理它。我认为您可以使用它,它可能非常简单:
$(document).not('#header, #categoryMore, #headerSearch').click(function() {
$('#header').slideToggle({
duration: 550,
easing: 'easeOutExpo'
});
});
这允许您单击#标题
之外的任何位置,操作将被触发。您不必担心其他。单击()
事件及其传播(至少据我所知)。。。它将不会选择#标题、#类别名称、
和#标题搜索
无论何时单击页眉外部,都可以使用上下滑动页眉及其内容。如果您只想隐藏它,那么只需像现在一样使用.slideUp()
)
希望对您有所帮助。我想您可以使用,它可能很简单:
$(document).not('#header, #categoryMore, #headerSearch').click(function() {
$('#header').slideToggle({
duration: 550,
easing: 'easeOutExpo'
});
});
这允许您单击#标题
之外的任何位置,操作将被触发。您不必担心其他。单击()
事件及其传播(至少据我所知)。。。它将不会选择#标题、#类别名称、
和#标题搜索
无论何时单击页眉外部,都可以使用上下滑动页眉及其内容。如果您只想隐藏它,那么只需像现在一样使用.slideUp()
)
希望这能有所帮助。我相信patrick dw
在这里的思路是正确的,但是html标记很高兴能在答案上得到具体的说明。如果我理解正确,您在标题中有一些元素,在标题隐藏时您不想隐藏这些元素。是这样吗?j-man86-不管你最终做什么,你都不想通过执行$(“*:not(#header)”)
为页面上的几乎每个元素添加一个处理程序。这是非常低效的,真的不应该使用。也许这就是我的解决方案给你带来的麻烦。你需要去掉这个选择器。我相信patrick dw
在这里是正确的,但是html标记会很好地显示在答案上。如果我理解正确,你在标题中有一些元素,当标题被隐藏时,你不想隐藏这些元素。是这样吗?j-man86-不管你最终做什么,你都不想通过执行$(“*:not(#header)”)
为页面上的几乎每个元素添加一个处理程序。这是非常低效的,真的不应该使用。也许这就是我的解决方案给你带来的麻烦。你需要去掉那个选择器。@j-man86-这里有一个例子。(示例使用了slideToggle()
)什么不起作用?你是说#标题没有滑动吗?或者在#标题
中单击使其滑动?sry:)。。。要指定,在#header div内单击仍会使其滑动。@j-man86-不应该这样做。确保如上所述将事件
参数添加到#header
的处理函数中。还要确保删除将单击事件添加到页面上所有其他元素的代码<代码>$(“*:非(#标题)”)
@j-man86-以下是一个示例。(例如: