Ignorar los nodos xml vacíos cuando estén vacíos / jquery

Encontré y edité este código para usar jquery para mostrar elementos de un feed xml de un calendario en línea en una página web. ¿Hay alguna manera de incluir condiciones para poder mostrar la información de un nodo cuando está lleno e ignorarlo cuando el nodo está vacío? Por ejemplo, para incluir la ruta de la imagen, el texto de la imagen y el html necesario para formatearlo, pero ignorar todo eso cuando no hay información de la ruta de la imagen y el texto de la imagen.

<script>
$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "http://orion.lib.mi.us/evanced/lib/eventsxml.asp?dm=exml&lib=0&nd=90",
        dataType: "xml",
        success: xmlParser,
        error: function(){alert("We're sorry. Something didn't load correctly.");}
    });
});

function xmlParser(xml) {
    $(xml).find("item").each(function () {
        var xml_image       = $(this).find('imagepath').text();
        var xml_imagetext   = $(this).find('imagetext').text();
        var xml_title       = $(this).find('title').text();
        var xml_date        = $(this).find('date').text();
        var xml_time        = $(this).find('time').text();
        var xml_location    = $(this).find('location').text();
        var xml_link        = $(this).find('link').text();
        var xml_description = $(this).find('description').text();
        $(".main").append('<div class="event"><div class="logo"><img alt="' + xml_imagetext + '" src="' + xml_image + '" /></div><p class="title"><a href="' + xml_link + '">' + xml_title + '</a></p><p class="when">' + xml_date + ' at ' + xml_time + '</p><p class="location">Location: ' + xml_location + '</p><p class="description">' + xml_description + '</p><p class="link"><a href="' + xml_link + '">More Information</a></p></div>');
    });}
</script>

preguntado el 22 de mayo de 12 a las 18:05

1 Respuestas

Es posible que desee simplemente agregar una condición antes de agregar el contenido a principal.

if (xml_image != "" && xml_imagetext != "") {
    $(".main").append...
}

O si desea mostrar cosas diferentes, haga algo en este sentido:

var hasImage = xml_image != "" && xml_imagetext != "";
var html = "<div class='event'>" +
    ((hasImage) ? "<img src='" + xml_image + "' alt='" + xml_imagetext + "' />" : "")
    + "</div>";

contestado el 22 de mayo de 12 a las 19:05

Muchas gracias. Pensé que algo así funcionaría, pero mis intentos siempre rompían la página. - otplsteve

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.