jQuery

2016-04-10 16 views
0

ile kimlik değerine dayalı bir öğeyi gizle Olayların bir listesini alıyorum ve her olayın kimliğini bir son kullanma tarihi olarak ayarlıyorum, böylece tarih, öğenin gizlendiği geçerli tarihten daha az olduğunda. Sen benim her işlevin dışında tanımladı benim dateContent değişkenin değerini kaybediyor gibi görünüyor, aşağıda benim kod görebilirsiniz:jQuery

html:

<div class="today"></div> 
         <ul id="20160430" class="nostylelist event-list"> 
          <li>Event 1</li> 
          <li>April 29, 2016</li> 
          <li>Minneapolis Convention Center</li> 
          <li>Minneapolis, MN</li> 
          <li>Booth 659</li> 
         </ul> 
         <ul id="20151106" class="nostylelist event-list"> 
          <li>Event 2</li> 
          <li>November 4-5, 2015</li> 
          <li>Minneapolis Convention Center</li> 
          <li>Minneapolis, MN</li> 
          <li>Booth 659</li> 
         </ul> 

$(function() { 
    var today 
    var year 
    var month 
    var monthLength 
    var day 
    var dateContent 

    function currentDate() { 
     var today = new Date(); 
     var year = today.getFullYear(); 
     var month = today.getMonth()+1; 
     var monthLength = month.toString().length; 
     var day = today.getDate(); 
     if (monthLength == 1) { 
      dateContent = $('.today').append(year).append('0' + month).append(day); 
     } else { 
      dateContent = $('.today').append(year).append(month).append(day); 
     } 
    } 
    currentDate(); 


    $('.event-list').each(function(index) { 
     if ($(this).attr('id') < dateContent) { 
      $(this).hide(); 
     } 
     //$('.id').text(dateContent); 
    }); 

}); 
+0

'.Append() 'olmayan dizileri birbirine bağlanması için, elemanların içindir. – Alnitak

cevap

3

dateContent öğesinin beklenen biçimde bir dize olarak almak için currentDate işlevini bu şekilde değiştirin. GetFullYear, getMonth ve getDate dönüş sayılarını unutmayın, bu yüzden formatımızı korumak istiyorsak bunları doğrudan eklememeliyiz.

function currentDate() { 
    var today = new Date(); 
    var year = today.getFullYear(); 
    var month = today.getMonth()+1; 
    var monthLength = month.toString().length; 
    var day = today.getDate(); 
    if (monthLength == 1) { 
     dateContent = "" + year + "0" + month + day; 
    } else { 
     dateContent = "" + year + month + day; 
    } 
} 
+0

Teşekkürler! Bu mükemmel çalıştı. DateContent'i bir dize olarak almak, gerçekten uğraştığım şey. Yıl + ay + gün denedim, ancak bu sayıları bir araya toplar. – brandozz

0

Sana dateContent tutmaya bekliyoruz düşünüyorum Geçerli tarih. Ancak, yaptığınız şey şu anki tarihi, örnek, 20160410'u .today olarak ayarlamaktır ve ekleme işleminin dönüş değeri, 20160410 değerine değil, bir DOM öğesidir.

Böylece, attr ('id') ile karşılaştırma çalışmayacak.

0
<script> 
    $(function() { 
     var today 
     var year 
     var month 
     var monthLength 
     var day 
     var dateContent 
     function currentDate() { 
      var today = new Date(); 
      var year = today.getFullYear(); 
      var month = today.getMonth() + 1; 
      var monthLength = month.toString().length; 
      var day = today.getDate(); 
      if (monthLength == 1) { 
       $('.today').append(year).append('0' + month).append(day); 
       dateContent = year + '0' + month + day; 
      } else { 
       $('.today').append(year).append(month).append(day); 
       dateContent = year + month + day; 
      } 

     } 
     currentDate();    
     $('.event-list').each(function (index) { 
      console.log(dateContent); 
      console.log($(this).attr('id')); 
      if ($(this).attr('id') < dateContent) { 
       $(this).hide(); 
      }     
     }); 

    });