2017-04-21 54 views
0

我有AJAX调用,我从后端获取数据并获取div。隐藏无val的div(ASP.NET MVC)

这里是我的AJAX调用的代码:

$(document).ready(function() { 
    question_block(); 
}); 
function question_block() { 
    $.ajax({ 
     url: '@Url.Action("QuestionBlocks", "Interwier")', 
     contentType: 'application/json; charset=utf-8', 
     type: 'GET', 
     dataType: 'json', 
     processData: false, 
     success: function(result) { 
      var email = result; 
      for (var i = 0; i <= email.length - 1; i++) { 
       var question = 
        '<div class="activeQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question1 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question2 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question3 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question4 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question5 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question6 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question7 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question8 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question9 + 
         '</div>' + 
         '<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + 
         email[i].Question10 + 
         '</div>'; 

       count_blocks(); 
      } 
     }, 
     error: function() { 
      alert("Smth wrong in controller"); 
     } 
    }); 
} 

但一些块可没有值。我需要隐藏它们

我如何通过Javascript来做到这一点?

非常感谢您的帮助。

+0

您可以使用像'$(“div:contains('')”).css(“display”,“none”)''.contains'' – Curiousdev

+0

评估'email [i] .Question#'将一个类应用到生成的'div',根据需要应用'display:none'或者使用skipp添加'div' – Nope

回答

2

你可以编写自己的函数来检查div是否为empty

function isEmpty(el){ 
    return !$.trim(el.html()) 
} 
$('.hiddenQue').each(function(){ 
    if(isEmpty($(this))) 
     $(this).hide(); 
}); 
1

附加内容后使用$('.hiddenQue:empty').hide()

另外,修改你的逻辑,这样不派息创建其中QuestionX属性为空

0

我想我可以提出两个解决方案: 第一个是如果没有数据,它不创建DIV,这样的事情:

email[i].Question2 ? 
'<div class="hiddenQue" style="font-size:20px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);">' + email[i].Question2 + '</div>' : '' + 

第二个是添加一些类的div没有数据的方式,在第一个解决方案。

+0

我认为。如果没有数据,则不创建div更为正确。但我不明白你的代码 – Eugene

+0

它是一个三元操作,短版本的if ... else,如果你想要的话:

+0

也许您需要将复杂表达式放在中加上大括号 –

0

您可以后question_block()方法使用此代码$('.activeQue').find('.hiddenQue:empty').hide();