当我点击它外面或页面上的其他位置时隐藏元素

时间:2011-01-11 20:22:28

标签: jquery hide

好的,我在DIV中有一个单选按钮列表,当我点击span时,这个DIV会向下滑动。

现在,当我选择其中一个单选按钮时,跨度中的文本会被替换,DIV会向上滑动。

每当用户点击页面外的某个位置/页面上的任何其他位置时,我还需要使带有单选按钮列表的DIV向上滑动。

这是我的jQuery:

$('input[type=radio]').click(function() {       
    $('.selected-search-wjs').text($(this).parent().text());//This replaces the text/selection
    $('.radio-btns-wrapper-wjs').slideUp('fast');//This makes the DIV slide back up after a selection has been made
});

知道怎么做吗?

提前致谢。

PS。如果您需要HTML,请告诉我。我没有把它放在这里因为我认为没有必要,因为这是一个行为特征,无论HTML如何组合在一起。感谢。

3 个答案:

答案 0 :(得分:3)

试试这个:

var wrapper = $('.radio-btns-wrapper-wjs'); // cache the wrapper element for speed
$(document).click(function(e) { // when any click is received
    if (
        (wrapper[0] != e.target) && // the target element is not the wrapper
        (!wrapper.has(e.target).length) // and the wrapper does not contain the target element
    ) {
        wrapper.slideUp('fast');
    }
});

答案 1 :(得分:0)

尝试jQuery是:未选中,如

$('body:not(.radio-btns-wrapper-wjs, input[type=radio])').click(function() {
    $('.radio-btns-wrapper-wjs').slideUp('fast');
});

答案 2 :(得分:0)

以下是此解决方案。

我需要做的就是使用 .mouseleave 方法创建另一个函数:

$('.radio-btns-wrapper-wjs').mouseleave(function() {
  $(this).slideUp();
});

现在,我正在使用 .mouseout ,但它没有用,因为容器DIV中有子元素,所以一旦你将鼠标悬停在它们上面,DIV就会向上滑动。

所以我找到了关于为什么以及如何解决它的简单解释:

http://jquery-howto.blogspot.com/2009/04/problems-with-jquery-mouseover-mouseout.html

感谢。

修改 -

我遇到了这个案例的其他问题,请在此处查看问题和解决方案:Hide element if displayed (a little complex case)