jQuery e.stopPropagation() - 如何在不完全破坏 dropbox 功能的情况下使用?

2024-01-08

短篇故事:stopPropagation() 可以防止下拉菜单关闭 - 这很好。但它也会阻止下次打开保管箱 - 这很糟糕。

很长的故事:我正在使用 Twitter-Bootstrap,并且在下拉菜单中放置了一个搜索框,如下所示:

<div id="search_word_menu" style="position:absolute;right:157px;top:60px;"> 
        <ul class="nav nav-pills">
            <li class="dropdown" id="menu200">
                <a class="dropdown-toggle btn-inverse" data-toggle="dropdown" style="width:117px;position:relative;left:2px" href="#menu200">
                <i class="icon-th-list icon-white"></i>
                    Testing
                    <b class="caret"></b>
                </a>
                <ul class="dropdown-menu">
                    <li><a href="#">Retweets</a></li>
                    <li><a href="#">Favourites</a></li>
                    <li class="divider"></li>
                    <li><a href="#">A list</a></li>
                    <li class="divider"></li>
                    <li><a href="#">A saved search</a></li>
                    <li><a href="#">A saved #hashtag</a></li>
                    <li class="divider"></li>
                    <li>
<!--   HERE -->     <input id="drop_search" type="text" class="search_box_in_menu" value="Search...">

                    </li>
                </ul>
            </li>
        </ul>

当我在搜索框内单击时,默认行为显然是关闭下拉菜单 - 但这使得在搜索词中编写变得相当困难。所以我尝试了 e.stopPropagation(),它确实阻止了下拉列表的关闭。然后,当我在搜索框中按 Enter 时,我用 .toggle() 关闭下拉菜单 - 似乎也工作正常。

当我想再次执行所有操作时,问题就出现了,因为 e.stopPropagation() 现在已完全禁用下拉菜单 - 即。当我按下下拉菜单时,它不再打开!毫无疑问,这是因为 stopPropagation() - 但我该如何解决这个问题,以便获得上述功能,但又不完全破坏其余功能?

jQuery如下:

$(document).ready(function() {
    console.log("document.ready - ");

                //clearing search box on click
    $(".search_box_in_menu").click(function(e) {
        e.stopPropagation(); // works for the specific task
        console.log(".search_box_in_menu - click.");
        if($(this).val() == 'Search...') {
            $(this).val('');
            console.log(".search_box_in_menu - value removed.");

        };
        //return false; //this is e.preventDefault() and e.stopPropagation()


    });

                    // when pressing enter key in search box
    $('.search_box_in_menu').keypress(function(e) {
        var keycode = (e.keyCode ? e.keyCode : e.which);
        if(keycode == '13') {
            console.log(".search_box_in_menu - enter-key pressed.");
            console.log($(this).val());
            $(this).closest('.dropdown-menu').toggle(); //works

        }
    });


    $('.dropdown').click(function() {
        console.log(".dropdown - click.");
        $(this).closest('.dropdown-toggle').toggle(); //does nothing
    });

非常感谢一些帮助!我开始怀疑这可能是一个仅引导的问题,或者至少是由它们的实现引起的 - 但这超出了我的能力范围。


找到了解决方案:使用stopPropagation(),以及带有手动触发器的关闭盒。然后,由于某种原因(是stopPropagation()重置?),它有效。

//dealing with the dropdown box
$(document).ready(function() {
    console.log("document.ready - ");

    //clearing search box on click and prevent the dropdown from closing
    $(".search_box_in_menu").click(function(e) {
        e.stopPropagation();
        console.log(".search_box_in_menu - click.");
        if($(this).val() == 'Search...') {
            $(this).val('');
            console.log(".search_box_in_menu - value removed.");
        };
        //return false;         

    });

    // when pressing enter key in search box
    $('.search_box_in_menu').keypress(function(e) {
        var keycode = (e.keyCode ? e.keyCode : e.which);
        if(keycode == '13') {
            console.log(".search_box_in_menu - enter-key pressed.");
            console.log($(this).val());
            $(this).closest('.dropdown').trigger('click');
        }
    });

    //resetting a dirty search box
    $('.dropdown').click(function() {
        if ($(this).closest('.search_box_in_menu').val() == 'Search...') {
            console.log(".search_box_in_menu - clean searchbox.");
        }
        console.log(".dropdown - click.");
    });     
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery e.stopPropagation() - 如何在不完全破坏 dropbox 功能的情况下使用? 的相关文章

  • 我希望 jQuery 验证器向表单元素的父级添加一个类

    我该如何使用jQuery 验证器 http docs jquery com Plugins Validation添加 删除类名 例如validate 在表单元素的父元素上 li 这样我就可以通过仅设置一个类名来设置与该元素相关的所有内容的样
  • 使用 jQuery 选择具有数据属性的元素为其父元素分配一个 null ID

    这确实很奇怪 如果我使用 jQuery find 在滚动事件期间查找具有数据属性的子元素 然后滚动页面将重复添加和删除 IDparents这些元素 这很难描述 但这里有一个可重现的测试用例 http jsfiddle net 8fouvx9
  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • jQuery 检查字体粗细是正常还是粗体

    我使用以下代码设置 font weight 属性 this css font weight normal 现在我想检查一个元素是否具有粗体或正常的字体粗细属性 我该怎么做 你可以使用以下方法得到它 fontWeight this css f
  • 在 setInterval / setTimeout 中使用变量作为时间[重复]

    这个问题在这里已经有答案了 这是一个示例情况 var count time 1000 setInterval function count 1 time 上面的代码会将 count 变量加 1 即 1000 毫秒 看来 setInterva
  • jQuery / Ajax:如何循环遍历数组作为 Ajax 成功函数的一部分

    我有一个阿贾克斯调用返回一个数组并需要对该数组中的每个值执行某些操作 到目前为止 我有以下内容 但这会返回以下错误 Uncaught TypeError Cannot use in operator to search for length
  • jQuery 悬停时滚动到 div 并返回到第一个元素

    我基本上有一个具有设定尺寸的 div 和overflow hidden 该 div 包含 7 个子 div 但一次只显示一个 我希望当它们各自的链接悬停时能够平滑地垂直滚动 但是 第一部分 div 没有链接 并且是没有悬停链接时的默认部分
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 用javascript调用外部网页(跨域)

    我正在尝试使用以下网络服务来验证提要这个问题 https stackoverflow com questions 11996430 check if a url is a valid feed 但浏览器不允许我向另一台服务器发送 ajax
  • 在一个项目中使用多个 Javascript 框架?

    在一个项目中使用多个框架是好是坏 还是不好 因为它会变得混乱 一团糟 并且加载时间可能会更长 100 K 真的很重要吗 或者你应该坚持使用一个 通常最好选择一件事并坚持下去 原因有很多 更少的依赖 降低复杂性 更容易维护 更快的加载时间 不
  • 如何在Rails中使用jquery tokeninput?

    我正在尝试在我的应用程序的表单中添加 tokeninput jquery 字段 该字段允许用户发布状态更新 我希望用户能够将作品 单独的模型 附加到状态更新中 我正在使用 act as taggable on gem 并且我的查询指定标签上
  • jQuery Find() 和 XML 在 IE 中不起作用

    我正在尝试使用 jQuery 来解析内存中的 XML 文档 除了 IE 之外 这在所有东西上都很有效 令人震惊 一些谷歌搜索显示 问题很可能是由于 IE 将我的文档视为 HTML 而不是 XML MIME 类型 有没有办法让我的 jQuer
  • 使用 JavaScript 在日期中添加小时和分钟

    我正在根据世界各地的时区构建会议日历 我的问题是如何在 JavaScript 中从用户选择的日期中添加或减去时区 例如 在选择表单上 用户将从表单中选择日期 然后我将获取结果并转换为日期 如下所示 var ldSelectDate new
  • 如何重新加载 jquery dropkick 对象

    我使用一个简单的选择列表和 jquery dropkick 库来使其美观 现在我想在更改相应的选择元素后更改 dropkick 内容 出现了一个新选项 但只需调用 select dropkick 不起作用 而且好像不支持 只需从头开始重建那
  • 无法将数据加载到 mvc 4 中的 jTable 中

    好的 我第一次尝试 jTable 我可以加载表 但这对我没有什么好处 因为它不会加载我的任何数据 当我调试程序时 我想要的表中的所有行都存储在我的列表中 因此我很困惑为什么当我运行应用程序时会弹出一个对话框 显示 与服务器通信时发生错误 H
  • 为什么点击内容后放大的ajax弹出框会关闭

    请帮助我 我一直在尝试让放大的弹出ajax框显示登录表单 似乎表单出现了 但是一旦我单击表单或ajax主体中的任意位置 它就会消失 下面是代码 document ready function ajax popup link magnific
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • :jQuery / Sizzle 中的 nth-of-type()?

    让我惊讶的是Sizzle http sizzlejs com jQuery 使用的选择器引擎 带有一个内置的 nth child 选择器 但缺少 nth of type 选择器 为了说明之间的区别 nth child and nth of

随机推荐

  • 交换活动后如何保持倒计时计时器计数?

    当我在活动之间交换时 我需要一个 countDownTimer 继续运行 我有多个活动 我将 countDownTimer 放在主活动中 但是当我交换到另一个活动并返回到主活动时 它又会从头开始重新计数 我相信是因为 countDownTi
  • 使用 pysftp 或 Paramiko,如何获得包含属性的完整目录列表?

    正如标题所示 我正在尝试获取目录中所有文件和目录的列表 包括它们的属性 我正在寻找至少名称 大小 上次修改时间 以及它是文件还是文件夹 我在 Windows 上使用 Python 3 我试过了listdir 我得到了一个没有属性的文件列表
  • java.lang.Long 和 scala.Long

    我不知道我的代码中发生了什么 日志在这里 error blahblah SampleApp scala 22 53 overloaded method value reduce with alternatives error func or
  • Oracle“总”计划成本确实低于其某些要素

    我不明白为什么有时一个计划的总成本可能很小 但查看计划内部我们会发现巨大的成本 确实查询速度很慢 有人能给我解释一下吗 这是一个例子 显然 成本较高的部分来自主选择中的一个字段 该字段在子视图上执行 listagg 并且该子视图的连接条件包
  • 在运行时创建XmlRpcUrl接口

    目前 我正在使用 xml rpc net 接口通过以下语句静态创建 XML RPC XmlRpcUrl http dillieodigital wordpress com xmlrpc php public interface ICSBlo
  • DLLImport 在哪里查找非托管 DLL?

    一个简单的问题 在 Net 中声明 DLLImport 属性时 运行时在哪里寻找解决该 DLL 依赖关系的方法 我是否必须转储 DLL 和所有itsbin 文件夹中的依赖项 我认为它的工作方式与 LoadLibrary 类似 Maybe 使
  • 如何比较 PHAsset 和 UIImage

    我已经转换了一些PHAsset to UIImage PHImageManager manager PHImageManager defaultManager manager requestImageForAsset asset targe
  • 隐藏页面中的div并使其仅在打印引导程序3 MVC 5上可见

    有一个网页向用户显示信息 如果用户决定打印它 我想包含屏幕上不需要的附加信息 但在打印时会很有帮助 为了实现这种行为 我试图做一个div仅在打印时可见 但它并没有起作用 div class visible print hidden lg h
  • 如何构建卡方分布表

    我想在 python 中生成一个卡方分布表作为概率水平和自由度的函数 给定已知的卡值和自由度 如何计算概率是这样的 In 44 scipy stats chisqprob 5 991 2 Out 44 0 05001161502657908
  • 在 git rebase -i 中删除提交不会减少 .git 文件夹的大小

    我有一个 git 存储库 其中 git文件夹是7MB 然后我添加并提交了一个 exe 文件 该文件是16MB其次是 git gc aggressive git prune 经过上述我的 git文件夹现在是23MB 接下来我做了一个git r
  • sklearn Kfold 访问单折叠而不是 for 循环

    使用 cross validation KFold n n folds folds 之后 我想访问索引以进行单折叠的训练和测试 而不是遍历所有折叠 那么我们来看一下示例代码 from sklearn import cross validat
  • 有没有一种方法可以在不使用暂存缓冲区的情况下更新纹理?

    我正在与https vulkan tutorial com https vulkan tutorial com 深度缓冲代码作为基础 进行了一些更改以每帧更新命令缓冲区 我正在使用一种粗略的方法来检查 fps 不确定它到底有多准确 但我正在
  • 亲子信号沟通陷入僵局

    我已经实现了两个程序 parent cpp child c 它们应该通过信号进行通信 以交替方式无限期地工作 然而 由于某种原因 程序在随机的时间后进入死锁 我无法弄清楚为什么 发送给父进程的信号似乎在没有执行信号处理程序的情况下被丢弃 因
  • git log --follow 已重命名的目录有什么技巧吗?

    git 命令有一个有用的命令可以在重命名后跟踪文件 如下所示git log follow path to some file 不幸的是 它仅适用于单个文件 我希望能够做相当于git log follow some directory 做到这
  • 是否可以在不使用 Javascript 的情况下在 Web 引擎中检索 HTML 元素?

    有没有办法识别点击元素的类型webView 如文本框 单选按钮 按钮等 使用webEngine getDocument 假设我单击一个文本字段 我可以获得单击位置的 x y 坐标 是否可以识别该特定位置中存在的元素 像这样的东西docume
  • Jackson 中的通用元组反序列化

    碰巧我需要支持来自外部数据源的 Java JSON 数据 有一种常见的模式 它是一个包含固定数量的某些不同类型元素的数组 我们称之为元组 下面是我使用 FasterXML Jackson 对具有特定预期元素类型的 3 元素元组进行反序列化的
  • JSON 数据结构在列表和布尔值之间变化是否有效

    jstree 的 json 数据结构定义在https github com vakata jstree https github com vakata jstree 这是一个例子 text Root node children Child
  • CoreDNS 在获取端点、服务、命名空间时遇到问题

    我在 master 上的 CoreDNS 上遇到以下问题 另请参阅 master 上的ready is 0 1 E0321 22 54 45 590231 1 reflector go 126 pkg mod k8s io email pr
  • 为什么我们不能递增 (++) 或递减 (--) 数字文字

    例如 在下面的 JavaScript 代码中 为什么我们在使用变量时不会收到错误 但在使用数字文字时却收到错误 在节点 v6 9 5 上运行 let x 2 console log x 2 let y 2 console log y 3 c
  • jQuery e.stopPropagation() - 如何在不完全破坏 dropbox 功能的情况下使用?

    短篇故事 stopPropagation 可以防止下拉菜单关闭 这很好 但它也会阻止下次打开保管箱 这很糟糕 很长的故事 我正在使用 Twitter Bootstrap 并且在下拉菜单中放置了一个搜索框 如下所示 div ul class