2012-10-26 14 views
4

我試圖讓下拉菜單在基於觸摸的設備上正常工作。該菜單在點擊時可以正常打開,但由於父元素也是鏈接,因此它會在用戶選擇下拉菜單之前將鏈接帶到鏈接。如何在第一次觸摸時打開下拉列表,然後按照第二步上的鏈接 - jquery?

是否有辦法讓這個(僅在觸摸設備)的父元素的第一次輕觸打開下拉和第二次點擊帶給你的聯繫?

我有HTML和CSS但真正的JavaScript沒有,所以請的解決方案是基於腳本儘可能描述有很好的瞭解。

謝謝

+1

我有點困惑 - 你想要下拉菜單打開時,你點擊它或將鼠標懸停在上面? – 2012-10-26 10:21:24

+0

我希望它能在計算機上懸停並在觸摸屏上觸摸時打開。但我希望它忽略第一次觸摸的鏈接 – user1776763

+0

嗯......你介意我給你的答案只是用鼠標懸停在它上面嗎?我會盡量爲您研究觸摸屏,但您可能需要將其全部編碼到電腦上,然後放在PhoneGap上,以便在觸摸屏上工作。 – 2012-10-26 10:37:44

回答

0

這可能有所幫助。如果你有一個鏈接

<a href="#">your drop down menu</a>我的意思是添加#href

或者做到這一點在JavaScript

var link = $('.menu').find('a'); 

$(document).on('touchstart', link, function (e) { 
    e.preventDefault(); 
    //do your stuff 
}); 
+0

我的回答有幫助嗎? – 2619

+0

我需要父菜單項鍊接到頁面,所以我不能將它們全部更改爲'#' JavaScript可能工作,但我該如何執行此操作?該菜單是與類的菜單.menu – user1776763

+0

顯示一些代碼,我將如何能夠告訴你如何做到這一點。 – 2619

0
function createMenu(menuName,menuTitle,menuEntries,left,width) { 

numEntries = menuEntries.length; 

document.write('<div class="menuTitle" style="left:0px; width:100px;"'); 
document.write('onMouseover="menuToggle(\'' + menuName + '\');"'); 
document.write('onMouseout="menuToggle(\'' + menuName + '\');">'); 
document.write(menuTitle); 
document.write('</div>'); 

    document.write('<div id="myMenu" class="menu" style="left:0px; width:100px;"'); 
    document.write('onMouseout="menuToggle(\'' + menuName + '\')">'); 
    for (i = 0; i < numEntries; i++) { 
     document.write('<a href="' + menuEntries[i].url + '" class="menuEntry">' + menuEntries[i].entry + '</a><br>'); 
    } 
    document.write('</div>'); 

} 

    function menuToggle(target) { 

    targetMenu = (document.getElementById) ? document.getElementById(target).style : eval("document." + target); 
    targetMenu.top = (parseInt(targetMenu.top) == 22) ? -2000 : 22; 

    } 
    // --> 
    </script> 

這是用於創建滴鼠標時,下拉菜單的JavaScript是在它的上面 - 它來自於一本名爲的書,由Arman Danesh編寫的10個簡單步驟或更少的。他是一位偉大的作家,可能會比我更好地解釋這一點 - 但是這裏卻是如此。

你正在做的是建立與預定義變量的函數,如在申報()。行numEntries ...將變量numEntries的值設置爲預定義變量menuEntries的長度。換句話說,(在這個例子中,編程的條目數是3,numEntries = 3),但是你編碼的條目是numEntries的值。

的文件撰寫的東西可能看起來混亂,但它只是JavaScript代碼,持有的HTML代碼,因爲只是把股利它自己會打破,因爲你把這個腳本標籤的程序。如果你在任何時候都不理解我,只要問一下,我會告訴你什麼是教科書,當我以後對我有什麼。

這是處理的第一功能,第二是什麼使鼠標懸停在菜單下拉。我不知道如何在不引用這本書的情況下清楚地向你解釋這一點,但如果你需要我解釋它,我會嘗試。如果您需要HTML代碼來顯示菜單,我可以給你整個例子,我已經在我的電腦上。

希望這有助於和請只問,如果你需要我去了什麼。我會繼續研究如何改變它的觸摸屏爲您X

+1

感謝您的。該網站已經生效了,所以我不能在javascript中重建整個菜單系統。它用CSS創建,但我正在尋找一個腳本,它會告訴父元素如何執行 – user1776763

+0

好 - 爲什麼不嘗試製作一個.js文件?這樣,您只需將所有代碼添加到該新文件中,然後在您的''標記中添加一個鏈接,例如'' – 2012-10-26 11:50:23

0
$('.has-sub').on("touchstart", function (e) { 
var submenu = $(this).find('ul').first(); 
var link = $(this); //preselect the link 
if (link.hasClass('hover')) { 
     link.removeClass('hover'); 
     $(submenu).slideUp(0); 
     e.stopPropagation() 
     return true; 
} else { 
     $(submenu).slideDown(0); 
     link.addClass('hover'); 
     e.stopPropagation(); 
     return false; //extra, and to make sure the function has consistent return points 
} 

});

相關問題