当我点击某个输入选择时,我有一个div
向下滑动(打开)。在这个div
中,我有一些其他输入选择,我的目标是在点击页面的其余部分时向上滑动div
。
当我选择输入中的某个项目时,div
会向上滑动,我不希望这种情况发生。
div
吗? 这是我的javascript来滑动div:
$(document).mouseup(function (e) {
var container = $('.myDiv');
if (container.has(e.target).length === 0) {
$(container).removeClass('close');
$(container).addClass('open');
$(container).next().slideUp(200);
}
});
答案 0 :(得分:3)
当我选择输入中的某个项目时,div会向上滑动 它,我不希望这发生。
有什么方法可以在我点击外面时滑动div吗? 为什么div中的选择也会让它向上滑动?
在子元素上使用event.stopPropagation()以防止幻灯片事件被它们触发。
event.stopPropagation - 防止事件冒泡DOM 树,防止任何父处理程序被通知事件。
这是一个简单的jsFiddle以及下面的基本示例。
<强> jQuery的:强>
$('div').click(function(){
$('#slideMeUp').slideUp();
});
$('select').click(function(e){
e.stopPropagation();
});
<强> HTML:强>
<div>Clicking here will trigger it!
<select>
<option>This won't trigger the click event anymore!</option>
</select>
Clicking here will also trigger it!
</div>
<div id="slideMeUp">Only clicking the outer div will slide me up!</div>
答案 1 :(得分:0)
您可以使用e.target.id
ID
container
$(document).mouseup(function (e) {
var container = $('.myDiv');
if(e.target.id==$(this).attr('id'))
{
if (container.has(e.target).length === 0) {
$(container).removeClass('close');
$(container).addClass('open');
$(container).next().slideUp(200);
}
}
});
答案 2 :(得分:0)
我建议绑定mousedown
而不是mouseup
。浏览器之间的行为存在不一致,可能与您的问题有关。
你还应该添加一些逻辑来检查点击的元素不是div
本身,点击input
之外,但仍然在div
内部会导致发生slideUp
。
if (!container.has(e.target).length && !container.is(e.target)) {
...
}
除此之外,它应该可以正常工作。
答案 3 :(得分:0)
如果它是导致问题的特定项目,可能是这样的?
单击时,只要单击的项目在列表中为“not”,就告诉它滑动你的div。
('body').click(function(event) {
if (!$(event.target).is('#id_of_item .class_to_ignore')) {
var container = $('.myDiv');
$(container).removeClass('close');
$(container).addClass('open');
$(container).next().slideUp(200);
}
});