2016-11-30 50 views
0

所以有了這一點的代碼,我想要顯示覆蓋,.mg-show-info。 elInfoLink的點擊功能按計劃運行。現在我應該讓它的父母可以點擊,因爲已經有另一個事件了,我想我會按照你在這裏看到的那樣去做。現在通過單擊父項,它的子項的功能被調用,並且console.log有效,但是疊加層不顯示。 爲什麼?代碼只是部分執行

var elInfoLink = tile.querySelector('.info-link'); 
if (elInfoLink) { 

    $(elInfoLink).parent().click(function (e) { 
     $(elInfoLink).click(); 
    }); 

    $(elInfoLink).click(function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    var mg = document.querySelector('#mg'); 
    mg.classList.add('mg-show-info'); 
    mg.dataset.memoryOverlayShowId = tile.dataset.id; 
    console.log("foo"); 
    }); 
} 
+1

我想它與你的代碼塊中的e.stopPropagation();有關。它會停止事件傳播,從而不會到達父級。 –

+0

[jquery中的e.stopPropagation()在錨標籤上工作的可能重複](http://stackoverflow.com/questions/8952176/does-e-stoppropagation-in-jquery-works-on-anchor-tag) –

+1

@SwashataGhosh他需要'e.stopPropagation'。如果它被刪除,你將在父母 - >孩子 - >父母的事件循環中...' – Rajesh

回答

0

編輯:由於@Rory McCrossan指出的那樣,這是相當相當於你的符號;這工作正常。

方法.click()是在您的元素上註冊點擊事件偵聽器的簡寫。你想要做的是:

$(elInfoLink).parent().click(function (e) { 
    $(elInfoLink).trigger('click'); 
}); 
+0

這與OP已具有的邏輯相同。見http://api.jquery.com/click:'這個方法是前兩個變體中.on(「click」,處理程序)的快捷方式,而.trigger(「click」)' –

+0

你說得對, 我的錯! – SinDeus

0

那麼從有限的代碼,它看起來像這裏沒有「部分執行」。 我會重新檢查類mg-show-info是否被添加到正確的元素(如果該元素被正確選擇)並且加載了相關的CSS。