clicker.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. function setupClicker() {
  2. // when hovering over arrow, add highlight (only if inactive)
  3. $("i.methodToggle").hover(function () {
  4. if (!$("i.methodToggle").hasClass('active'))
  5. $(this).addClass("methodToggleHover");
  6. },
  7. function () {
  8. $(this).removeClass("methodToggleHover");
  9. }
  10. );
  11. function handleClick(e, linkHref) {
  12. //if (linkHref.indexOf("nav=api&api=") >= 0)
  13. // return;
  14. if (linkHref == "api")
  15. return;
  16. e.preventDefault();
  17. var dstElem;
  18. if (linkHref) {
  19. dstElem = $("article[id='" + linkHref + "']");
  20. }
  21. var $article = (dstElem || $(this)).closest('.article'),
  22. $arrow = $('i.methodClicker', $article);
  23. if (!$article.hasClass('methodToggleOpen') || this.force) {
  24. $article.addClass('methodToggleOpen');
  25. $arrow.removeClass('inactive').addClass('active');
  26. if (!$arrow[0])
  27. return;
  28. var data = $arrow[0].id.replace(/^js_/, "");
  29. //var state = {};
  30. //state.section = data;
  31. //$.bbq.pushState(state);
  32. scrollTo(null, data);
  33. }
  34. else {
  35. $article.removeClass('methodToggleOpen');
  36. $arrow.removeClass('active').addClass('inactive');
  37. }
  38. }
  39. function transformHash(e) {
  40. // some bs to figure out link hash
  41. var hashId = (e.srcElement ? e.srcElement.href : (e.hash || e.target.href)) || e.currentTarget.hash;
  42. handleClick(e, hashId.substring(hashId.indexOf("#") + 1));
  43. }
  44. // for the arrow
  45. $("i.methodToggle").click(handleClick);
  46. // for the signature
  47. $('.member-name').click(handleClick);
  48. // for the top dropdown
  49. $('li.memberLink a').click(transformHash);
  50. //$('a[href^="#"]').click(transformHash);
  51. $('.related-to', '.metaInfo').click(function(){
  52. location.hash = $(this).find('a').attr('href').split('#')[1];
  53. });
  54. }