Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 1070981
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 16, 20262026-05-16T20:38:53+00:00 2026-05-16T20:38:53+00:00

I’ve written some javascript using jQuery to replace any select lists with a div

  • 0

I’ve written some javascript using jQuery to replace any select lists with a div and ul alternative so that it will give me some more styling control and make the drop downs look the same cross browser. The below code works 99% for me but I have one issue. At the bottom of the code I have had to use .delay() to tell the code in a way to wait for the .each() loop above to finish doing what its doing. The problem with this is that there is atleast one second untill the replacement happens leaving a flash of the old select boxes. Also I can forsee another problem is what if it takes more than one second for the each() loop to complete…

How can I get the code at the bottom to only run once the each loop has run and complete. Also I welcome any optimizations on the rest of the code.

EDIT: Some of the HTML has been stripped from the code so I have pastebinned it: http://pastebin.com/4HFLjHE1


// Check when ready
$(function() {

    // Find dropdowns
    $("select.dropdownreplace").each(function() {replaceDropDown(this);});
    // If document clicked anywhere hide drop downs
    $(document).click(function(event){
        $("div.dropdownreplace ul").hide();
    });

});

function replaceDropDown(that) {
    // Create HTML for new drop down
    // hidden field
    var hiddeninput = $('');
    // div
    var dropdowndiv = $(''+$(":selected", that).text()+'
    '); // loop through values and make li's $("option", that).each(function() { $("ul", dropdowndiv).append('
  • '+$(this).val()+''+$(this).text()+'
  • '); // set click handler for this drop down $(dropdowndiv).click(function() { $("ul", this).show(); return false; }); // set click handler for link items $("a", dropdowndiv).click(function() { // Get name of hidden input var nameofdropdown = $(this).parent().parent().parent().attr('id'); var nameofinput = nameofdropdown.replace("dropdownreplacement_", ""); // set hidden input value to whats been clicked $("[name='"+nameofinput+"']").val($(this).parent().find("span").text()); // set div $("div#"+nameofdropdown+" > span").text($(this).text()); $("div#"+nameofdropdown+" ul").hide(); return false; }); }); // Remove drop down then add in replacement html $(that).delay(1000).after(hiddeninput); $(that).delay(1100).after(dropdowndiv); $(that).delay(1200).remove(); }

    Thnaks

    Scott

    • 1 1 Answer
    • 0 Views
    • 0 Followers
    • 0
    Share
    • Facebook
    • Report

    Leave an answer
    Cancel reply

    You must login to add an answer.

    Forgot Password?

    Need An Account, Sign Up Here

    1 Answer

    • Voted
    • Oldest
    • Recent
    • Random
    1. Editorial Team
      Editorial Team
      2026-05-16T20:38:53+00:00Added an answer on May 16, 2026 at 8:38 pm

      Inside your function, compare the index jquery passes you, with the total number of items you have.

      I don’t know your html, but I believe you can do this.

      Change your function so it receives the index param that jquery sends.

      $("option", that).each(function(index) {
      

      Then, at the end of that function compare the length with the index, if they are the same, then you’re done

      if ( $('option', that).length == (index +1 ) ) {
          $(that).after(hiddeninput);
          $(that).after(dropdowndiv);
          $(that).remove();
      }
      

      From my tests, this should be what you need. Don’t know if there is a more “standard” way to do it.

      Hope this helps

      • 0
      • Reply
      • Share
        Share
        • Share on Facebook
        • Share on Twitter
        • Share on LinkedIn
        • Share on WhatsApp
        • Report

    Sidebar

    Related Questions

    I am reading a book about Javascript and jQuery and using one of the
    That's pretty much it. I'm using Nokogiri to scrape a web page what has
    I've got a string that has curly quotes in it. I'd like to replace
    I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
    I need a function that will clean a strings' special characters. I do NOT
    Is it possible to replace javascript w/ HTML if JavaScript is not enabled on
    link Im having trouble converting the html entites into html characters, (&# 8217;) i
    I have just tried to save a simple *.rtf file with some websites and
    For some reason, after submitting a string like this Jack’s Spindle from a text
    I used javascript for loading a picture on my website depending on which small

    Explore

    • Home
    • Add group
    • Groups page
    • Communities
    • Questions
      • New Questions
      • Trending Questions
      • Must read Questions
      • Hot Questions
    • Polls
    • Tags
    • Badges
    • Users
    • Help
    • SEARCH

    Footer

    © 2021 The Archive Base. All Rights Reserved
    With Love by The Archive Base

    Insert/edit link

    Enter the destination URL

    Or link to existing content

      No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.