滚动时如何与元素交互
How to interact with elements when rollover?
我试图创建一个可扩展的滚动,但要与里面的元素交互。这里有一个可扩展的div,当它被扩展时,另一个div显示为"x"。我想要的是当我点击#wrap进入谷歌,当我点击#按钮进入雅虎。你怎么看,现在如果我超过了"x",我就会离开#wrap区域,变成mouseout。知道怎么解决这个问题吗?
https://jsfiddle.net/Ln6q9q9b/
<script>
$(document).ready(function() {
$("#wrap").hover(
//on mouseover
function() {
$(this).animate({height: '+=250'}, 'slow');
$('#button').css('display', 'block');
expanded = true;
console.log("expanded is " + expanded);
},
//on mouseout
function() {
$(this).animate({height: '-=250px'}, 'slow');
$("#button").hide();
expanded = false;
console.log("expanded is " + expanded);
}
);
$('#wrap').on('click', function(){
window.open('http://google.com', 'click', 'window settings');
return false;
console.log('click');
});
if(expanded = true){
$("#button").on('click', function(){
window.open('http://yahoo.com', 'click', 'window settings');
return false;
});
};
});
</script>
<style type="text/css">
#wrap{
width: 900px;
height:50px;
overflow:hidden;
background: black;
}
#button{
position: absolute;
color: white;
left: 10;
top: 10;
width: 10px;
height: 10px;
cursor: pointer;
}
</style>
<body>
<div id="wrap">
</div>
<div id="button">X</div>
</body>
在wrap
中添加按钮。
并将position: relative;
赋予wrap.
https://jsfiddle.net/afelixj/Ln6q9q9b/1/
不能100%确定你想要实现什么,但请查看relatedTarget。
对于mouseout,表示正在输入的元素;对于鼠标悬停,指示正在退出的元素。
对于您的mouseout
听众,您可以添加
function (evt) {
if(evt.relatedTarget.id === "button") return;
$(this).animate({height: '-=250px'}, 'slow');
//etc;
}
以下内容似乎适用于
$(document).ready(function() {
var expanded = false;
$("#wrap").hover(
//on mouseover
function() {
if (expanded) { return; }
$(this).animate({height: '+=250'}, 'slow');
$('#button').css('display', 'block');
expanded = true;
console.log("expanded is " + expanded);
},
//on mouseout
function(evt) {
if (evt.relatedTarget.id === "button") { return; }
$(this).animate({height: '-=250px'}, 'slow');
$("#button").hide();
expanded = false;
console.log("expanded is " + expanded);
}
);
$('#wrap').on('click', function(){
window.open('http://google.com', 'click', 'window settings');
return false;
console.log('click');
});
$("#button").on('click', function(evt){
window.open('http://yahoo.com', 'click', 'window settings');
return false;
});
});
我还将if (expanded) { return; }
添加到了mouseover侦听器中,并完全删除了if (expanded = true)
检查。
如果我理解得对,您所需要做的就是将#按钮放在#wrapdiv中。
<div id="wrap"><div id="button">X</div></div>
让其余的保持不变,它似乎可以随心所欲地工作。
相关文章:
- 无法获取interact.js拖动&放弃交互以使用Boostrap元素
- 元素当前不可见,因此单击按钮时可能无法与之交互
- 是否可以使用chrome扩展名与非活动选项卡中的内容元素进行交互
- 禁止某些 svg 子元素的鼠标交互
- 错误:“元素当前不可见,因此可能无法与硒交互”
- 防止鼠标与透明元素背景交互
- 无法与转换的 html 元素交互
- 实现等待元素存在 N 秒,然后使用 JavaScript 和 jQuery lib 与元素交互
- 只有在未与元素交互的情况下,我才能为其设置动画
- AngularJS控制器-与视图元素交互
- 滚动时如何与元素交互
- 验证web元素是否可以与交互
- JQuery检测嵌套元素上的点击交互,导致巨大的循环
- 如果没有事件处理程序,网页如何知道我何时与元素交互
- 阻止元素进行UI交互
- 从独立的元素与WebGL场景交互
- 如何检测或注册自定义元素加载并准备与之交互的回调
- 类更改后无法与元素交互
- 在与页面上的元素交互时阻止滑动事件
- 如何与javascript元素交互