2015-01-14 112 views
0

我有一個元素,坐在我的頁面中間作爲傳感器。該元素大於其下面的區域,其中包含鏈接。我需要能夠在寄存器當鼠標移動/移動傳感器,以及點擊下面的鏈接。點擊元素,但檢測到懸停

我看過所以,但我找不到解決方案適用於我的問題,因爲我需要這個圓形傳感器浮在頁面中間。

#css 
.sensor { 
    pointer-events: none; # does not register jquery's mouseenter, but allows the links to be clicked 
} 

#javascript 
$('.sensor').mouseenter(doStuff) #only works if pointer events are enabled 

這是一個基本樣機的小提琴:提前

http://jsfiddle.net/3rym41ra/

感謝。

+0

它會更容易,當傳感器是所有其他元素的父點擊。在這種情況下,您可以捕獲mouseevents並丟棄您不需要的ares – Fuzzyma

+0

是的,那是我現在的解決方案。通過我想定製傳感器的形狀和位置。 – steel

+0

然後,您可以通過觀看所有內容來對其進行自定義,只需忽略那些您不想要的即可 – Fuzzyma

回答

1

我在頁面上放置了一個圓形傳感器,它在盤旋時改變背景。 由於傳感器現在是鏈接的父級,所有事件都會冒泡。您可以在元素,但還是使用傳感器的某些區域,只要你喜歡

$('body').mousemove(function(e) { 
 

 
    // We want it circular on page so we take 50% left and 50% top as the middle 
 
    // Cirle has radius = 100px 
 

 
    var middle = { 
 
    x: $(window).width()/2, 
 
    y: $(window).height()/2 
 
    }; // Our middle-point 
 
    var normalize = { 
 
    x: middle.x - e.pageX, 
 
    y: middle.y - e.pageY 
 
    }; // mouse-position relative to the middle 
 
    var radius = 100; // radius 
 

 
    // some Math 
 
    if (normalize.x * normalize.x + normalize.y * normalize.y < radius * radius) { 
 
    // inside circle 
 
    $('body').css('background', 'red'); 
 
    } else { 
 
    // outside 
 
    $('body').css('background', 'white'); 
 
    } 
 

 

 
})
body, 
 
html { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a href="#">One</a> 
 
<a href="#">Two</a> 
 
<a href="#">Three</a> 
 
<a href="#">Four</a>

+0

感謝此。我希望我不會訴諸於JavaScript計算,但是因爲你爲我做了數學...... :) – steel