在动态显示/隐藏的元素上应用Jquery

在动态显示/隐藏的元素上应用Jquery,jquery,dynamic,drop-down-menu,responsive-design,element,Jquery,Dynamic,Drop Down Menu,Responsive Design,Element,我有一个页面,可以让菜单下拉,以便做出反应。所以很明显,只有当屏幕更小时,选择标签才会出现在图片中。我想将jquery应用于那个选择框和当时动态添加的其他两个按钮 我提出这个问题: 但这并没有帮我解决问题。谁能解释一下我哪里出了问题 我使用jquery在我的页面中创建了下拉菜单。-如果有人需要,仅供参考 以下是我尝试过的: <div id="nav" role="navigation"> <a href="#nav" title="Show navi

我有一个页面,可以让菜单下拉,以便做出反应。所以很明显,只有当屏幕更小时,选择标签才会出现在图片中。我想将jquery应用于那个选择框和当时动态添加的其他两个按钮

我提出这个问题:

但这并没有帮我解决问题。谁能解释一下我哪里出了问题

我使用jquery在我的页面中创建了下拉菜单。-如果有人需要,仅供参考

以下是我尝试过的:

<div id="nav" role="navigation"> 
            <a href="#nav" title="Show navigation" id="shownav">
                choose one
                <img src="images/dropmenu-arrow.png" alt="" class="droparrow">
            </a> 
            <a href="#" title="Hide navigation" id="hidenav">
                choose one
                <img src="images/dropmenu-arrow.png" alt="" class="droparrow">
            </a>
            <ul class="clearfix" id="kat-drop">
                <li><a href="#">list item 1</a></li>
                <li><a href="#">list item 2</a></li>
                <li><a href="#">list item 3</a></li>    
            </ul>
      </div>
<script src="js/doubletaptogo.min.js"></script>       
        <script>

            $( function()
            {
                $( '#nav li:has(ul)' ).doubleTapToGo();

            });// upto this-it runs fine giving me dropmenu for desired screen

            $(document).on("click",$("#shownav"), function(){
                //alert("clicked"); // this didn't work neither the rest of the code from here
                 if($("#kat-drop").css("display")=="block"){

                      $("#kat-drop").slideUp();
                 }
                 else{

                      $("#kat-drop").slideDown();
                 }
            } );


        </script>   
编辑-2

它既不能防止重新加载页面,也不能提醒我

 $(document).on("click","#shownav", function(event){
                event.preventDefault();   // i want to prevent reloading of page too which doesn't work for now.                

        } );
 $(document).on("click","#shownav", function(event){
                alert("clicked");// not working yet         

        } );

第二个参数应该是字符串选择器,您正在传递jQuery对象

$(document).on("click","#shownav", function(){});

第二个参数应该是字符串选择器,您正在传递jQuery对象

$(document).on("click","#shownav", function(){});

只需从以下位置更改代码:

$(document).on("click",$("#shownav"), function(){
$(document).on("click",$("#shownav"), function(){
为此:

$(document).on("click", "#shownav", function(){
$(document).on("click","#shownav", function(){
如所示,使用时的正确语法如下:

更新

但它仍然刷新了整个页面,这是我唯一想做的事情 要防止同时隐藏/显示菜单

您只需使用以下命令来防止锚定的默认单击操作:

在编辑的代码中:

$(document).on("click", "#shownav", function (event) {
    event.preventDefault(); 
});

$(document).on("click", "#shownav", function (event) {
    alert("clicked"); // not working yet         
});
您已将两个事件处理程序附加到同一元素。只需分配一个事件处理程序,如下所示:

$(document).on("click", "#shownav", function (e) {
    e.preventDefault(); 
    alert("clicked");
});

并查看与我提供的小提琴演示类似的结果。

只需将代码更改为:

$(document).on("click",$("#shownav"), function(){
$(document).on("click",$("#shownav"), function(){
为此:

$(document).on("click", "#shownav", function(){
$(document).on("click","#shownav", function(){
如所示,使用时的正确语法如下:

更新

但它仍然刷新了整个页面,这是我唯一想做的事情 要防止同时隐藏/显示菜单

您只需使用以下命令来防止锚定的默认单击操作:

在编辑的代码中:

$(document).on("click", "#shownav", function (event) {
    event.preventDefault(); 
});

$(document).on("click", "#shownav", function (event) {
    alert("clicked"); // not working yet         
});
您已将两个事件处理程序附加到同一元素。只需分配一个事件处理程序,如下所示:

$(document).on("click", "#shownav", function (e) {
    e.preventDefault(); 
    alert("clicked");
});
并查看我提供的小提琴演示的结果。

更改此选项:

为此:

$(document).on("click", "#shownav", function(){
$(document).on("click","#shownav", function(){
更新: 好的,另一个你可以试试:

$(function(){
     $( '#nav li:has(ul)' ).doubleTapToGo();
     $(document).on("click","#shownav", function(event){ //<--pass the event here too
        event.preventDefault();// <-----------stop the default behavior of anchor 
     });
});// upto this-it runs fine giving me dropmenu for desired screen
更改此项:

为此:

$(document).on("click", "#shownav", function(){
$(document).on("click","#shownav", function(){
更新: 好的,另一个你可以试试:

$(function(){
     $( '#nav li:has(ul)' ).doubleTapToGo();
     $(document).on("click","#shownav", function(event){ //<--pass the event here too
        event.preventDefault();// <-----------stop the default behavior of anchor 
     });
});// upto this-it runs fine giving me dropmenu for desired screen

我试过这个。但它仍然刷新了整个页面,这是我唯一想阻止隐藏/显示菜单的事情。请查看编辑。它仍然不起作用:似乎代码不起作用,因为我甚至没有得到警告,我在那里尝试了。我把代码放在我的页面ul标签下面。有什么问题吗?@Hiral尝试将click函数放入doc ready处理程序。请参阅答案中的最新编辑。也尝试了此。。元素已经存在,jquery将隐藏/显示这些元素。我认为,即使是普通的jquery函数也应该可以工作,但事实并非如此。你知道吗?我试过了。但它仍然刷新了整个页面,这是我唯一想阻止隐藏/显示菜单的事情。请查看编辑。它仍然不起作用:似乎代码不起作用,因为我甚至没有得到警告,我在那里尝试了。我把代码放在我的页面ul标签下面。有什么问题吗?@Hiral尝试将click函数放入doc ready处理程序。请参阅答案中的最新编辑。也尝试了此。。元素已经存在,jquery将隐藏/显示这些元素。我认为,即使是普通的jquery函数也应该可以工作,但事实并非如此。你知道吗?我试过了。但它仍然刷新了整个页面,这是我唯一想阻止隐藏/显示菜单的事情。请看编辑。非常感谢。。我明白你的意思,但就我的情况而言,它似乎是站不住脚的事实上,元素已经存在了。它只是被jquery隐藏和显示。但即使是普通的jquery函数也可以使用,所以我尝试了这个。非常感谢!你的小提琴帮了大忙,我试过了。但它仍然刷新了整个页面,这是我唯一想阻止隐藏/显示菜单的事情。请看编辑。非常感谢。。我明白你的意思,但就我的情况而言,它似乎是站不住脚的事实上,元素已经存在了。它只是被jquery隐藏和显示。但即使是普通的jquery函数也可以使用,所以我尝试了这个。非常感谢!你的小提琴帮了大忙。