Add code to WordPress menu items by class

I am trying to add

onclick="toggle_visibility('sub-menu');"

into the opening tag of specific menu items generated in WordPress. I have used the following function to target all parent menu items and now need to find the correct js to add this in dynamically.

function menu_set_dropdown( $sorted_menu_items, $args ) {
    $last_top = 0;
    foreach ( $sorted_menu_items as $key = $obj ) {
        // it is a top lv item?
        if ( 0 == $obj-menu_item_parent ) {
            // set the key of the parent
            $last_top = $key;
        } else {
            $sorted_menu_items[$last_top]-classes['dropdown'] = 'dropdown';
        }
    }
    return $sorted_menu_items;
}
add_filter( 'wp_nav_menu_objects', 'menu_set_dropdown', 10, 2 );

I have tried this in my footer but it's not working. I may be using the wrong script, or I may not be using this correctly.

    script type="text/javascript"
        $('.res-clearfix li.dropdown a').click(function() {
            onclick="toggle_visibility('sub-menu');"
        });
    /script

Topic sub-menu menus Wordpress javascript

Category Web


So yes, by far you should use the new event handlers instead of adding attributes to your html tags. (so your second method, in the footer)

The reason your footer code didn't work is because you didn't quite figure out how to transfer from the attribute to the handler form...

When you say onclick="toggle_visibility('sub-menu');" the "onclick=" is an html attribute and anything inside the double-quotes after that is javascript code.

So to make that into a jquery click handler, you just need the javascript code part:

<script type="text/javascript">
    $(function() { // <--- make sure we don't run our code before the page is ready!
        $('.res-clearfix li.dropdown a').click(function() {
            toggle_visibility('sub-menu');
        });
    });
</script>

Hope this helps!

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.