开发者

Is there a way to convert this jquery code to javascript?

I'm trying to create a tab menu. And I need this coded in regular javascript, not jquery.

$(document).ready(function() {
//When page loads...
$(".general_info_content").hide(); //Hide all content
$("ul.general_info_tabs li:first").addClass("active").show(); //Activate first tab
$(".general_info_content:first").show(); //Show first tab content

//On Click Event
$("ul.general_info_tabs li").click(function() {

    $("ul.general_info_tabs li").removeClass("active"); //Remove any "active" class
    $(this).a开发者_Go百科ddClass("active"); //Add "active" class to selected tab
    $(".general_info_content").hide(); //Hide all tab content

    var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
    $(activeTab).fadeIn(); //Fade in the active ID content
    return false;
});
});


The core of what you want to do is below - I'm sure there are a thousand different ways to do each task:

Remove a CSS class from an element:

var classes = document.getElementById([id]).className.split(" ");
for(var i = 0; i < classes.length; i++)
    if(classes[i] == removeClass) 
          classes[i] = "";
document.getElementById([id]).className = classes.join(" ");

Add a CSS class to an element:

document.getElementById([i]).className += " " + addClassName;

Hide an element:

document.getElementById([i]).style.display = "none";

Fade an element:

// not tested, but based on tested/used code
function fade(el, opacity, fadeInTime) {
     if (opacity < 100) {
          el.style.opacity = opacity / 100;
          el.style.filter = "alpha(opacity=" + opacity + ")";
          opacity += 5;

          setTimeout(function () { fade(el, opacity, fadeInTime); }, fadeInTime / 5);
     }
}

To find all elements by CSS and tag name:

var matches = new Array();
var all = document.getElementByTagName(searchTagName);
for(var i = 0; i < all.length; i++){
     if(all[i].className.replace(searchClassName, "") != all[i].className) {
           matches.push(all[i].className);
     }
}
// do something with (i.e., return or process) matches

And for the record, I find it encouraging, not unreasonable, that a person using the jQuery library wants to know how to do get things done with native JS/DOM.


More functions to complement Brian's post. Good luck.

EDIT: As I mentioned I would change the class=general_info_content to id=general_info_content1.

  function attach(el, event, fnc) {
      //attach event to the element
      if (el.addEventListener) {
          el.addEventListener(event, fnc, false);
      }
      else if (document.attachEvent) {
          el["on" + event] = fnc;  // Don not use attachEvent as it breaks 'this'
      }
  }

  function ready() {
    // put all your code within $(function(){}); here.
  }

  function init() {
      attach(document, "readystatechange", function () {
          if (document.readyState == "complete") {
              ready();
          }
      });
  }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜