2016-12-12 10 views
-1

私のコードに問題があります。現在、私はJSONデータベースからアイテムを引き出しており、ページには多くのアイテムが表示されています。私はshowProductと呼ばれるクラスを持っています。これは、ページ上でアイテムがクリックされたときに発生します。これは、項目を1つの項目に絞り込んで、名前、画像などをDIVに表示する機能を実行します。JSのページをリロードしないでください

私のコードでは、私は同じ関数をもう一度呼び出すことを試みています(showProduct)。私はそれが正しい項目でページをリロードすることを望みます。それは私がすでにこの機能を一度呼び、それをもう一度呼び出そうとしているという事実と関係していますか?以下は私のコードのおかげです。

$(document).ready(function() { 

    'use strict'; 

    $.ajax({ 
    dataType: "jsonp", 
    url: 'path to json', 
    success: function(json){ 

     //check for window hash and display appropriate product category 
     var currentHash = window.location.hash; 
     switch(currentHash) 
     { 
      case '#tomatoes': 
       displayTomatoes(); 
       break; 
      default: 
       displayAll(); 
       break; 
     } 

     //display product category based on click 
     $("#tomatoes").click(function(event){ 
     displayTomatoes(); 
      event.preventDefault(); 
      window.location.hash = '#tomatoes'; 
     }); 
     $("#displayall").click(function(event){ 
     displayAll(); 
     }); 

     //display tomatoes function 
     function displayTomatoes() { 
      var categoryImage = ''; 

      $.each(json, function (i, item) { 
       if (item.itemCommodity == "1120" && item.itemBrandLetter == "C") { 
        categoryImage += '<div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">' + '<a href="#"' + 'class="showProduct"' + 'data-itempageurl="' + item.itemName + '"' + 'data-itemgmo="' + item.itemGMOFree + '"' + 'data-itembpa="' + item.itemBPAFree + '"' + 'data-itemgluten="' + item.itemGlutenFree + '"' + 'data-itemimage="' + item.imageURL + '"' + 'data-itemname="' + item.itemName + '"' + 'data-itemoz="' + item.itemPackSize + '"' + 'data-itemdescription="' + item.itemDescription + '"' + 'data-itemupc="' + item.itemFullUPC + '">' + '<img class="img-responsive img-hover productImagesCategory" src="' + item.imageURL + '">' + '<h3>' + item.itemName + '</h3>' + '</a>' + '</div>'; 
       } 
      }); 



$('#imagesCategoryProducts').hide().html(categoryImage).fadeIn('slow'); 

       //show individual product function on click 
       $(".showProduct").click(function(event){ 

       //hide all current products 
       $('#productCategories').hide(); 

       //get passed data from other function 
       var clickedItemName = '<h1>' + $(this).data('itemname') + '</h1>'; 
       var clickedItemUPC = $(this).data('itemupc'); 
       var clickedItemOZ = '<h2>' + $(this).data('itemoz') + '</h2>'; 
       var clickedItemDescription = '<p>' + $(this).data('itemdescription') + '</p>'; 
       var clickedItemImage = '<img class="img-responsive img-rounded center-block" src="' + $(this).data('itemimage') + '">'; 
       var clickedItemGluten = $(this).data('itemgluten'); 
       var clickedItemBPA = $(this).data('itembpa'); 
       var clickedItemGMO = $(this).data('itemgmo'); 
       var clickedItemPageURL = $(this).data('itempageurl'); 

       //check if clicked data equals correct item 
       $.each(json, function (i, item) { 
        if (item.itemName === clickedItemName) { 
         clickedItemName 
        } 
        if (item.itemFullUPC === clickedItemUPC) { 
         clickedItemUPC 
        } 
        if (item.itemPackSize === clickedItemOZ) { 
         clickedItemOZ 
        } 
        if (item.itemDescription === clickedItemDescription) { 
         clickedItemDescription 
        } 
        if (item.imageURL === clickedItemImage) { 
         clickedItemImage 
        } 
        if (item.itemGlutenFree === clickedItemGluten) { 
         clickedItemGluten 
        } 
        if (item.itemBPAFree === clickedItemBPA) { 
         clickedItemBPA 
        } 
        if (item.itemGMOFree === clickedItemGMO) { 
         clickedItemGMO 
        } 

        //assign window hash to each product 
        if (item.itemName === clickedItemPageURL) { 
         event.preventDefault(); 
         clickedItemPageURL = clickedItemPageURL.replace(/\s/g, ''); 
         window.location.hash = clickedItemPageURL; 
        } 
       }); 

        //remove extra characters from UPC 
        var originalUPC = clickedItemUPC; 
        var strippedUPC = '<h2>' + originalUPC.slice(1, -1); + '</h2>'; 

        //show individual product information 
        $('#productSocialShare').show(); 
        $('#individualProduct').show(); 
        $('#relatedProducts').show(); 

        //append product information to appropriate DIV 
        $('#productTitle').html(clickedItemName); 
        $('#productUPC').html(strippedUPC); 
        $('#productOZ').html(clickedItemOZ); 
        $('#productDescription').html(clickedItemDescription); 
        $('#productImage').html(clickedItemImage); 

        //check if gluten free is true and show image 
        if (clickedItemGluten == "Y") { 
         clickedItemGluten = '<img class="img-responsive img-rounded img-margin" src="../images/misc/gluten_free_test.jpg">'; 
         $('#productGlutenFree').html(clickedItemGluten); 
         $('#productGlutenFree').show(); 
        } else { 
         $('#productGlutenFree').hide(); 
        } 

        //check if bpa free is true and show image 
        if (clickedItemBPA == "Y") { 
         clickedItemBPA = '<img class="img-responsive img-rounded img-margin" src="../images/misc/bpa_free_test.jpg">'; 
         $('#productBPAFree').html(clickedItemBPA); 
         $('#productBPAFree').show(); 
        } else { 
         $('#productBPAFree').hide(); 
        } 

        //check if gmo free is true and show image 
        if (clickedItemGMO == "Y") { 
         clickedItemGMO = '<img class="img-responsive img-rounded img-margin" src="../images/misc/gmo_test.jpg">'; 
         $('#productGMOFree').html(clickedItemGMO); 
         $('#productGMOFree').show(); 
        } else { 
         $('#productGMOFree').hide(); 
        } 

       }); 
       closeNav(); 
      } 

      //display all products function 
      function displayAll() { 
       var categoryImage = ''; 

       $.each(json, function (i, item) { 

         categoryImage += '<div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">' + '<a href="#"' + 'class="showProduct"' + 'data-itempageurl="' + item.itemName + '"' + 'data-itemgmo="' + item.itemGMOFree + '"' + 'data-itembpa="' + item.itemBPAFree + '"' + 'data-itemgluten="' + item.itemGlutenFree + '"' + 'data-itemimage="' + item.imageURL + '"' + 'data-itemname="' + item.itemName + '"' + 'data-itemoz="' + item.itemPackSize + '"' + 'data-itemdescription="' + item.itemDescription + '"' + 'data-itemupc="' + item.itemFullUPC + '">' + '<img class="img-responsive img-hover productImagesCategory" src="' + item.imageURL + '">' + '<h3>' + item.itemName + '</h3>' + '</a>' + '</div>'; 

       }); 

       $('#imagesCategoryProducts').hide().html(categoryImage).fadeIn('slow'); 

       //show individual product function on click 
       $(".showProduct").click(function(event){ 

       //hide all current products 
       $('#productCategories').hide(); 

       //get passed data from other function 
       var clickedItemName = '<h1>' + $(this).data('itemname') + '</h1>'; 
       var clickedItemUPC = $(this).data('itemupc'); 
       var clickedItemOZ = '<h2>' + $(this).data('itemoz') + '</h2>'; 
       var clickedItemDescription = '<p>' + $(this).data('itemdescription') + '</p>'; 
       var clickedItemImage = '<img class="img-responsive img-rounded center-block" src="' + $(this).data('itemimage') + '">'; 
       var clickedItemGluten = $(this).data('itemgluten'); 
       var clickedItemBPA = $(this).data('itembpa'); 
       var clickedItemGMO = $(this).data('itemgmo'); 
       var clickedItemPageURL = $(this).data('itempageurl'); 

       //check if clicked data equals correct item 
       $.each(json, function (i, item) { 
        if (item.itemName === clickedItemName) { 
         clickedItemName 
        } 
        if (item.itemFullUPC === clickedItemUPC) { 
         clickedItemUPC 
        } 
        if (item.itemPackSize === clickedItemOZ) { 
         clickedItemOZ 
        } 
        if (item.itemDescription === clickedItemDescription) { 
         clickedItemDescription 
        } 
        if (item.imageURL === clickedItemImage) { 
         clickedItemImage 
        } 
        if (item.itemGlutenFree === clickedItemGluten) { 
         clickedItemGluten 
        } 
        if (item.itemBPAFree === clickedItemBPA) { 
         clickedItemBPA 
        } 
        if (item.itemGMOFree === clickedItemGMO) { 
         clickedItemGMO 
        } 

        //assign window hash to each product 
        if (item.itemName === clickedItemPageURL) { 
         event.preventDefault(); 
         clickedItemPageURL = clickedItemPageURL.replace(/\s/g, ''); 
         window.location.hash = clickedItemPageURL; 
        } 
       }); 

        //remove extra characters from UPC 
        var originalUPC = clickedItemUPC; 
        var strippedUPC = '<h2>' + originalUPC.slice(1, -1); + '</h2>'; 

        //show individual product information 
        $('#productSocialShare').show(); 
        $('#individualProduct').show(); 
        $('#relatedProducts').show(); 

        //append product information to appropriate DIV 
        $('#productTitle').html(clickedItemName); 
        $('#productUPC').html(strippedUPC); 
        $('#productOZ').html(clickedItemOZ); 
        $('#productDescription').html(clickedItemDescription); 
        $('#productImage').html(clickedItemImage); 

        //check if gluten free is true and show image 
        if (clickedItemGluten == "Y") { 
         clickedItemGluten = '<img class="img-responsive img-rounded img-margin" src="../images/misc/gluten_free_test.jpg">'; 
         $('#productGlutenFree').html(clickedItemGluten); 
         $('#productGlutenFree').show(); 
        } else { 
         $('#productGlutenFree').hide(); 
        } 

        //check if bpa free is true and show image 
        if (clickedItemBPA == "Y") { 
         clickedItemBPA = '<img class="img-responsive img-rounded img-margin" src="../images/misc/bpa_free_test.jpg">'; 
         $('#productBPAFree').html(clickedItemBPA); 
         $('#productBPAFree').show(); 
        } else { 
         $('#productBPAFree').hide(); 
        } 

        //check if gmo free is true and show image 
        if (clickedItemGMO == "Y") { 
         clickedItemGMO = '<img class="img-responsive img-rounded img-margin" src="../images/misc/gmo_test.jpg">'; 
         $('#productGMOFree').html(clickedItemGMO); 
         $('#productGMOFree').show(); 
        } else { 
         $('#productGMOFree').hide(); 
        } 

        //show random recipe for each item 
        var url = 'path to json'; 

        $.getJSON(url, function(json) { 

         var randomRecipe = json[Math.floor(Math.random() * json.length)]; 

         randomRecipe += '<div>' + '<a href="' + randomRecipe.recipePageURL +'">' + '<img class="img-responsive" src="' + randomRecipe.recipeImageCategoryURL + '">' + '</a>' + '<a href="' + randomRecipe.recipePageURL +'">' + '<h3 class="recipeSubCategoryImgCaption">' + randomRecipe.recipeName + '</h3>' + '</a>' + '</div>'; 

         $('#featuredRecipe').append(randomRecipe); 

        }); 

        // get similar product for each item 
        var similarProduct = ''; 

        $.each(json, function (i, item) { 

         similarProduct += '<div>' + '<a href="#"' + 'class="showProduct"' + '">' + '<img class="img-responsive img-rounded center-block productImage" src="' + item.imageURL + '">' + '<h3 class="recipeSubCategoryImgCaption">' + item.itemName + '</h3>' + '</a>' + '</div>'; 

        }); 

        $('#productSimilar').html(similarProduct) 

       }); 
       closeNav(); 
      } 

     } 
    }); 
}); 

答えて

0

これを実証しました。これが機能するためには、UPCがすでにハッシュの終わりに追加されているので、ウインドウ位置ハッシュを使用して項目UPCに一致させることができました。それによって私は2つを一致させて正しい項目を表示することができました。

関連する問題