2014-06-11 76 views
0

我有一些模板,我想他們是currsor:pointer但不<a>標籤,鏈接是該區塊的小孩,這個塊具有.clicable類,未捕獲的RangeError:最大調用堆棧大小超出

那麼什麼我在努力做的是:如果一個.clicable元素已被點擊,防止默認並單擊第一個發現孩子鏈接

​​

的事情是,我得到這個控制檯錯誤:

Uncaught RangeError: Maximum call stack size exceeded

任何想法我錯過了什麼?

這是怎麼.clicable要素之一是這樣的:

<div class="spa clicable " style="background-image:url(http://localhost:8096/files/Cachorro-1-camada-Izu-y-Sol-800x400.JPG);"> 
     <div> 
     <p><a href="http://localhost:8096/spa">Category</a></p> 
     <h4>Title</h4> 
     </div> 
</div> 

我想補充一點:

$('.clicable a').on('click' , function (e) { 
    console.log(true); 
    e.stopPropagation(); 
}); 

但這種方式沒有接收到錯誤,真實記錄但頁面沒有去鏈接地址

+1

函數調用自己的無限。 – Hawk

+0

@Hawk但是爲什麼'e.stopPropagation()'不能防止這種情況? –

回答

1

直接在javascript中重定向而不是觸發click事件,因爲這避免了整個冒泡遞歸的事情。

$('section').on('click', '.clicable', function (e) { 
    var $links = $(this).find('a'); 
    if($links.length > 0) { 
     window.location.href = $links.get(0).href; 
    } 
}); 

一般沒有理由點擊這樣的父母時,重定向,因爲你應該只是風格你的錨不同,單擊而不是那些無需任何JavaScript重定向。

0

檢查是否被點擊是鏈接,如果沒有,找到鏈接。

$('section').on('click', '.clicable', function (e) { 
    if (!$(e.target).is("a")) { 
     $(this).find('a')[0].click(); 
    } 
}); 
-1

這裏沒有滿足條件。改變這種

if($links.length > 0) 
{ 
    $links.eq(0).click; 
} 

這個

if($links.length > 0) 
{ 
    $links.eq(0).click; 
    $links--; // reduce size of links so that condition is met 
} 

它會調用自身無限的,如果你不符合條件。

相關問題