我想通过jQuery找到将inital href属性返回到其原始元素的最佳方法。
我正在制作一个由列表项组成的菜单,其中包含锚标记。由于菜单项的锚点的hrefs需要等于javascript:void(0),如果它们具有.downloadtoggle类,那么当在移动/平板电脑视图中用于按钮/手风琴目的时,我需要在785px宽的浏览器窗口下交换锚点的href。
我已经成功地做到了,但挑战在于,一旦窗口恢复到桌面视图,锚点的href就需要返回到它们的原始值,一个实际的链接,而不是手风琴按钮。
我试图通过首先创建一个原始URL的全局数组来恢复原始URL,这是成功的。在它们之间循环,并将它们返回到它们自己的当前元素,这就是我正在挣扎的地方。这是我下面的东西。
提前感谢!
var links = $('a.dropdown-toggle').map(function() { return this.href }).get()
function mobileNavStyles() {
var $containerWidth = $(window).width();
if ($containerWidth <= 785) {
$('.dropdown-toggle').attr("href", "javascript:void(0)");
}
if($containerWidth > 785) {
$.each( links, function( intValue, currentElement ) {
return $(this).attr('href', currentElement);
});
}
}
不要这样做:
$('.dropdown-toggle').attr("href", "javascript:void(0)");
保留href
,但通过从事件处理程序返回false来禁用链接:
function mobileNavStyles() {
var $containerWidth = $(window).width();
$('.dropdown-toggle').unbind('click');
if ($containerWidth <= 785)
$('.dropdown-toggle').click(function(){ return false; });
}
编辑:如果.dropdown-toggle
上有其他click
处理程序,则可以使用bind
并将处理程序命名为:
function mobileNavStyles() {
var $containerWidth = $(window).width();
$('.dropdown-toggle').unbind('click.canceller');
if ($containerWidth <= 785)
$('.dropdown-toggle').bind('click.canceller', function(){ return false; });
}