gpt4 book ai didi

javascript - 想在较小的窗口中保持下拉菜单的状态

转载 作者:行者123 更新时间:2023-11-28 13:07:29 25 4
gpt4 key购买 nike

我正在为我的导航栏使用 Twitter bootstrap...当我缩小浏览器窗口时,您可以在顶部看到一个按钮....当你点击按钮时,你会看到一个下拉菜单....但是当我单击下拉菜单中的链接时......它会转到另一页......但下拉菜单会折叠......如何保持下拉菜单的状态,即使它移动到另一个页面....

!function ($) {

"use strict"; // jshint ;_;


/* DROPDOWN CLASS DEFINITION
* ========================= */

var toggle = '[data-toggle=dropdown]'
, Dropdown = function (element) {
var $el = $(element).on('click.dropdown.data-api', this.toggle)
$('html').on('click.dropdown.data-api', function () {
$el.parent().removeClass('open')
})
}

Dropdown.prototype = {

constructor: Dropdown

, toggle: function (e) {
var $this = $(this)
, $parent
, isActive

if ($this.is('.disabled, :disabled')) return

$parent = getParent($this)

isActive = $parent.hasClass('open')

clearMenus()

if (!isActive) {
$parent.toggleClass('open')
}

$this.focus()

return false
}

, keydown: function (e) {
var $this
, $items
, $active
, $parent
, isActive
, index

if (!/(38|40|27)/.test(e.keyCode)) return

$this = $(this)

e.preventDefault()
e.stopPropagation()

if ($this.is('.disabled, :disabled')) return

$parent = getParent($this)

isActive = $parent.hasClass('open')

if (!isActive || (isActive && e.keyCode == 27)) {
if (e.which == 27) $parent.find(toggle).focus()
return $this.click()
}

$items = $('[role=menu] li:not(.divider):visible a', $parent)

if (!$items.length) return

index = $items.index($items.filter(':focus'))

if (e.keyCode == 38 && index > 0) index-- // up
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0

$items
.eq(index)
.focus()
}

}

function clearMenus() {
$(toggle).each(function () {
getParent($(this)).removeClass('open')
})
}

function getParent($this) {
var selector = $this.attr('data-target')
, $parent

if (!selector) {
selector = $this.attr('href')
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}

$parent = selector && $(selector)

if (!$parent || !$parent.length) $parent = $this.parent()

return $parent
}


/* DROPDOWN PLUGIN DEFINITION
* ========================== */

var old = $.fn.dropdown

$.fn.dropdown = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('dropdown')
if (!data) $this.data('dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}

$.fn.dropdown.Constructor = Dropdown


/* DROPDOWN NO CONFLICT
* ==================== */

$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
return this
}


/* APPLY TO STANDARD DROPDOWN ELEMENTS
* =================================== */

$(document)
.on('click.dropdown.data-api', clearMenus)
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)

}(window.jQuery);

最佳答案

页面重新加载到新页面、新内容(包括导航栏)等

关于javascript - 想在较小的窗口中保持下拉菜单的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15772745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com