如果用户的鼠标已经离开了两个html元素(文本字段和跨区块),我想提醒一些事情。我如何在jquery中说 AND ,徒劳无功我试过这样的事情:
if ($('textarea.commentField') && $('span.loginPrompt')).mouseout(function() {
alert('something');
});
答案 0 :(得分:7)
你原则上不能这样做,因为这需要一些腿部工作。
这样的东西可行,但必须有更好的解决方案:
var state = {a:false,b:false};
$('.a').mouseenter(enterA);
$('.a').mouseout(exitA);
$('.b').mouseenter(enterB);
$('.b').mouseout(exitB);
function enterA(){ state.a = true }
function exitA(){ state.a = false }
function enterB(){ state.b = true }
function exitB(){ state.b = false }
然后,如果你有jQuery 1.4.2,你可以绑定多个事件,所以在第一个事件之后添加它们。
$('.a,.b').mouseout(function(){
//we're outside of both blocks
if( !state.a && !state.b )
{
//do something
}
});
当你离开A或B时会发射,而你也在另一个之外。我想这就是你的意思。
答案 1 :(得分:3)
如果跨度包含文本字段,则只需要跨度上的处理程序。
如果要将相同的处理程序附加到两个独立元素,请使用:
$('textarea.commentField, span.loginPrompt').mouseout(...)
答案 2 :(得分:1)
这可能会有所帮助:
$('textarea.commentField, span.loginPrompt').mouseout(function() {
alert('something');
});
答案 3 :(得分:1)
在其他答案的基础上,您可以尝试
(function() {
var inc = 0;
var both = false;
$('textarea.commentField, span.loginPrompt')
.mouseover(function() {
inc++;
if(inc==2) { both = true; }
})
.mouseout(function() {
inc--;
if(inc == 0 && both) {
both = false;
// do whatever else you wanted here
});
})();
这与其他基于状态的答案的功能不同,因为只有当鼠标同时位于do whatever
和textarea
时才会触发span
位。 both
var跟踪两个元素是否在任何时候都让鼠标进入而不离开。
它包含在一个函数中,因此状态变量不会污染外部命名空间