2013-04-15 4 views
-3

Добрый день!Упрощение кодов JQuery

Я хотел бы что-то спросить. Есть ли такой способ, который может сократить мои линии в jquery? Я имею в виду специально в части if-else. Спасибо!


$("#banner a").bind("click",function(event){//2 

event.preventDefault(); 

target = $(this).attr("href"); 

    if(target=="#home"){ 
       $("#prevID").attr("class",""); 
       $("#nextID").attr("class","next"); 
       $("#nextID").attr("href","#home"); 
       $("#prevID").attr("href","#home"); 

      }else if(target=="#newsletter"){ 
       $("#prevID").attr("class","prev"); 
       $("#nextID").attr("href","#newsletter"); 
       $("#prevID").attr("href","#newsletter"); 

      }else if(target=="#directions"){ 
       $("#prevID").attr("class","prev"); 
       $("#nextID").attr("href","#directions"); 
       $("#prevID").attr("href","#directions"); 

      }else if(target=="#contact"){ 
       $("#prevID").attr("class","prev"); 
       $("#nextID").attr("class",""); 
       $("#nextID").attr("href","#contact"); 
       $("#prevID").attr("href","#contact"); 

      }else{} 

      $("html, body").stop().animate({ 
       scrollLeft: $(target).offset().left, 
       scrollTop: $(target).offset().top 
      }, 1200); 
     });//closing 2 

     $(".next").bind("click",function(event){//3 
      event.preventDefault(); 
      target = $(this).attr("href"); 
      if(target=='#home'){ 
       a='#newsletter'; 
       $(".next").attr("href","#newsletter"); 
       $("#prevID").attr("class","prev"); 
       $("#prevID").attr("href","#newsletter"); 
      }else if(target=='#newsletter'){ 
       a='#directions'; 
       $(".next").attr("href","#directions"); 
        $("#prevID").attr("href","#directions"); 
      }else if(target=='#directions'){ 
       a='#contact'; 
       $(".next").attr("href","#contact"); 
        $("#prevID").attr("href","#contact"); 
       $(".next").attr("class",""); 
      }else{} 


      $("html, body").stop().animate({ 
       scrollLeft: $(a).offset().left, 
       scrollTop: $(a).offset().top 
      }, 1200); 

     // $(".next").attr("href","#"); 
     });//closing 3 

     $("#prevID").bind("click",function(event){//3 
      event.preventDefault(); 
      target = $(this).attr("href"); 

      if(target=='#newsletter'){ 
       a='#home'; 
       $("#prevID").attr("href","#home"); 
       $(".next").attr("href","#home"); 
       $("#prevID").attr("class",""); 
      }else if(target=='#directions'){ 
       a='#newsletter'; 
       $("#prevID").attr("href","#newsletter"); 
       $(".next").attr("href","#newsletter"); 


      }else if(target=='#contact'){ 
       a='#directions'; 
       $("#prevID").attr("href","#directions"); 
       $("#nextID").attr("class","next"); 
       $("#nextID").attr("href","#directions"); 

      }else{} 


      $("html, body").stop().animate({ 
       scrollLeft: $(a).offset().left, 
       scrollTop: $(a).offset().top 
      }, 1200); 

     // $(".next").attr("href","#"); 
     });//closing 3 

    }); 

Это выглядит своего рода толкнуть смотреть. Кроме того, я все еще участвую в jquery, поэтому приношу свои извинения за нетрадиционные синтаксисы. :)

+4

Мы не проверяем код. – gdoron

+1

Перейти на сайт: http://codereview.stackexchange.com/ или нанять разработчика –

+0

Вы знакомы с 'switch()' операторами? – BenM

ответ

0

Вы, вероятно, получить больше ответов на этот запрос в http://codereview.stackexchange.com, но вот идея о том, как можно упростить первый блок кода и избежать repeatingso много кода с помощью таблицы подстановки вместо множественного if/else if заявления:

$("#banner a").click(function(event){//2 
    event.preventDefault(); 
    target = $(this).attr("href"); 
    var data = { 
     // target: [prevID class, nextID class] 
     "#home": ["", "next"], 
     "#newsletter": ["prev", null], 
     "#directions": ["prev", null], 
     "#contact": ["prev", ""] 
    }; 
    var item = data[target]; 
    if (item) { 
     $("#nextID").attr("href", target); 
     $("#prevID").attr("href", target).attr("class", item[0]); 
     if (item[1] !== null) { 
      $("#nextID").attr("class", item[1]); 
     } 
    } 

    $("html, body").stop().animate({ 
     scrollLeft: $(target).offset().left, 
     scrollTop: $(target).offset().top 
    }, 1200); 
});//closing 2 
+0

Спасибо за помощь. это несколько уменьшает мой код и мои извинения за его размещение здесь. У вас нет подсказки на сайте http://codereview.stackexchange.com. Спасибо! –

+0

@JorossBarredo - Более важно, чем чистое количество строк кода, это не имеет повторяющихся строк кода, и это более расширяемо. Например, вы можете добавить больше элементов, просто добавив новые элементы в таблицу. Или вы можете добавить новые атрибуты, просто добавив одну новую строку кода и новый элемент в каждый массив. Или, если вы хотите изменить код, вам нужно изменить только одно место, а не четыре. Возможно, вы захотите прочитать о [DRY] (http://en.wikipedia.org/wiki/Don't_repeat_yourself) (не повторяйте себя. – jfriend00

+0

Спасибо вам большое! :) –

Смежные вопросы