Jaison Brooks
Jaison Brooks

Reputation: 5826

If div contains a span with a class based on parameter

Im trying to create a simple function that create span's with an class that equals whatever is piped into the function. These spans fill inside a parent div. I also want to ensure that once a span has been added that another span is not add with that id/class, unless my multiSearchEnabled boolean is true.

Here is some code i've

function createBadge(badge_type) {
    var badge_parent_div = $("#badge-column-div");
    var badge = "<span class='badge-text " + badge_type + "'>" + badge_type + "</span>";

    if (!$(badge_parent_div.find("span").hasClass(badge_type))) {
        badge_parent_div.append(badge);
    } else {
        if (multiSearchEnabled) {
            badge_parent_div.append(badge); // Add another Badge, since search contains multiples
         }
    }
  }

However this doesnt seem to work, this function will be ran onKeyUp therefore is why i need to detect if the span already exists for this type, so i dont duplicate it.

Updated based on suggestions

function createBadge(badge_type) {
 var badge = "<span class='" + badge_type + "'>" + badge_type + "</span>";
 var bHasBadge = $("#badge-column-div").has('.' + badge_type);

 if (bHasBadge == false || (bHasBadge && multiSearchEnabled == true))
 {
     // add it
     $("#badge-column-div").append(badge);
 }
}

However with the following code, nothing ever get's added. I need it add a badge initially, then only if the multiSearchEnabled boolean is true to add more than one.

Upvotes: 1

Views: 888

Answers (1)

Brett Weber
Brett Weber

Reputation: 1907

has() checks for child controls matching a selector.

function createBadge(sBadgeType) 
{
    var oBadgeParent = $("#badge-column-div");
    var bHasBadge    = oBadgeParent.has("span." + sBadgeType)

    if (bHasBadge == false || bMultiSearchEnabled) 
        oBadgeParent.append
        (
            $("<span class='badge-text " +sBadgeType+ "'>" +sBadgeType+ "</span>")
        );
}

Upvotes: 1

Related Questions