• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Sweet Family Table

  • Home
  • Recipe Index
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • About
  • Contact

Sweet Family Table

  • Home
  • Recipe Index
  • Budget
  • Cheat Meal
  • Healthy
  • Keto
  • Quick
  • Vegan
  • About
  • Contact

Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight

Jump to Recipe·Print Recipe

If you’re looking for a dish that perfectly blends bold flavors with crispy perfection, then these Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight are just what you need! This recipe has become a cherished favorite in my kitchen, and for good reason. The wings are not only packed with a smoky, garlicky kick but also come together effortlessly. Whether you’re hosting a game night with friends or enjoying a cozy dinner at home, these wings will satisfy your cravings and impress everyone at the table.

Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight image 2

Imagine biting into a perfectly cooked wing, where the spices dance on your palate and the crispy texture keeps you coming back for more. They’re an absolute hit for busy weeknights or festive gatherings alike. So grab your apron, and let’s dive into this mouthwatering recipe!

Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight image 3
Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight image 4

Why You’ll Love This Recipe

  • Quick Preparation: In less than an hour, you can have these delicious wings ready to serve—perfect for those last-minute cravings!
  • Crispy Texture: Thanks to the baking powder trick, you’ll achieve that crunchy skin without deep-frying—guilt-free indulgence at its best!
  • Family Favorite: These wings are sure to be a hit with both kids and adults alike. Everyone loves finger food that’s bursting with flavor!
  • Versatile Flavor Profile: With a delightful blend of spices, they work well as appetizers or main dishes. Pair them with your favorite sides for a complete meal.
  • Make-Ahead Option: Prepare the wings in advance, season them, and store them in the fridge until you’re ready to bake. Perfect for entertaining!

Ingredients You’ll Need

These Cajun Spiced Chicken Wings use simple and wholesome ingredients that you likely already have on hand. They come together beautifully to create a dish that’s full of flavor and appeal.

For the Wings

  • 3 pounds split chicken wings
  • 2 tablespoons baking powder
  • 3 teaspoons kosher salt
  • 1 teaspoon black pepper
  • 1 tablespoon smoked paprika
  • 2 teaspoons garlic powder
  • 2 teaspoons dried oregano
  • 1 teaspoon cayenne pepper
  • 1 teaspoon dried thyme

For the Sauce

  • 2 tablespoons butter (or vegan butter for a dairy-free option)
  • ¼ cup Crystals hot sauce
  • 1 tablespoon coconut aminos (or soy sauce)
  • Freshly chopped parsley (for garnish)

Variations

This recipe is quite flexible! You can easily customize it to suit different tastes or dietary preferences.

  • Swap the protein: Try using cauliflower wings for a vegetarian option that still packs tons of flavor!
  • Change up the seasoning: Experiment with different spice blends like lemon pepper or BBQ rubs if Cajun isn’t your style.
  • Add some sweetness: Mix in honey or maple syrup to balance out the spice for those who enjoy a sweet-savory twist.
  • Make it extra spicy: If you like heat, toss in additional cayenne or even some diced jalapeños into your sauce!

How to Make Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight

Step 1: Preheat Your Oven

Start by adjusting your oven rack to the upper-middle position and preheating the oven to 425°F (220°C). Lining your baking sheet with aluminum foil makes cleanup easier later on, while placing a wire rack on top helps achieve that coveted crispy texture by allowing air circulation around the wings.

Step 2: Pat Dry the Wings

Using paper towels, pat the chicken wings dry thoroughly. This step is crucial because moisture can prevent them from getting that delightful crispiness we all desire. The dryer they are, the better they’ll turn out!

Step 3: Seasoning Time

In a large bowl, combine your dried wings with baking powder, kosher salt, black pepper, smoked paprika, garlic powder, oregano, cayenne pepper, and thyme. Toss everything together until each wing is evenly coated. The baking powder is key here—it helps draw moisture away from the skin for extra crispiness.

Step 4: Arrange on Rack

Place your seasoned wings in a single layer on the prepared wire rack with skin side up. It’s important not to crowd them; giving each wing space allows them to cook evenly and develop that perfect golden crust.

Step 5: Bake Away

Transfer your wings to the preheated oven and bake them for 20 minutes. After this initial baking time, carefully flip them over using tongs and return them to bake for another 20 minutes. Finally, flip them again so they’re skin side up one last time and bake for an additional 5-10 minutes until they’re crispy and cooked through.

Step 6: Prepare the Sauce

While those delicious wings are baking away, melt butter in a small saucepan over medium heat. Once melted, add Crystal’s hot sauce along with coconut aminos (or soy sauce). Let it simmer gently for about five minutes—this reduces it slightly while melding all those wonderful flavors together.

Step 7: Toss Them Together

Once your wings are done baking, place them into a large bowl and pour that delicious sauce over top. Toss gently until every wing is generously coated in this spicy goodness.

Step 8: Garnish & Serve

Finally, garnish your Cajun spiced chicken wings with freshly chopped parsley before serving. Enjoy these hot and crispy delights right away—they’re perfect as finger food at parties or as part of any meal!

Pro Tips for Making Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight

To ensure your wings turn out perfectly crispy and flavorful, keep these helpful tips in mind!

  • Pat the wings dry: Removing excess moisture is key to achieving that golden-brown crispiness. The drier the wings, the better they will crisp up during cooking.
  • Don’t crowd the pan: Giving each wing enough space allows hot air to circulate properly, ensuring even cooking and maximizing crispiness.
  • Use a wire rack: Elevating the wings on a wire rack while baking lets fat drip away, which helps create a crunchier texture on all sides.
  • Adjust seasoning to taste: Feel free to tweak the spice levels based on your personal preferences; adding more cayenne can kick up the heat for those who love it spicy!
  • Serve immediately: For the best experience, serve your wings right after tossing them in sauce to maintain their crispy texture.

How to Serve Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight

Presenting your Cajun Spiced Chicken Wings beautifully can enhance their appeal. Here are some ideas for serving this delicious dish.

Garnishes

  • Fresh parsley: Chopped parsley adds a pop of color and freshness that complements the spicy flavor of the wings.
  • Lemon wedges: A squeeze of lemon over the wings brightens up the dish and balances out the spices beautifully.

Side Dishes

  • Celery sticks: Their crispness and mild flavor provide a refreshing contrast to the spiciness of the wings.
  • Carrot sticks: Sweet and crunchy, carrot sticks are a great palate cleanser that pairs well with spicy flavors.
  • Creamy ranch or blue cheese dip: These cooling dips are classic accompaniments that help tone down the heat from the wings while adding rich flavor.
  • Cornbread: This Southern staple offers a slightly sweet complement to spicy dishes and is perfect for soaking up any sauce left on your plate.

Make Ahead and Storage

Cajun Spiced Chicken Wings are perfect for meal prep, allowing you to enjoy their bold flavors throughout the week. Here’s how to store and manage leftovers effectively.

Storing Leftovers

  • Allow the wings to cool completely before storing them.
  • Place the wings in an airtight container.
  • Store in the refrigerator for up to 3-4 days.

Freezing

  • Let the wings cool down completely before freezing.
  • Arrange them in a single layer on a baking sheet and freeze until solid.
  • Transfer the frozen wings to a freezer-safe bag or container, removing as much air as possible.
  • They can be stored in the freezer for up to 2-3 months.

Reheating

  • Preheat your oven to 375°F (190°C).
  • Place the wings on a baking sheet lined with parchment paper.
  • Bake for about 15-20 minutes, or until heated through and crispy. For extra crispiness, broil for 1-2 minutes at the end.

FAQs

Have questions? Here are some common ones about Cajun Spiced Chicken Wings!

Can I make Cajun Spiced Chicken Wings ahead of time?

Yes! You can prepare the wings and store them in the refrigerator or freezer. Follow our storage tips to keep them fresh and flavorful.

What makes these Cajun Spiced Chicken Wings so crispy?

The secret lies in using baking powder, which helps to draw moisture away from the chicken skin, resulting in a wonderfully crispy texture when baked.

How spicy are these Cajun Spiced Chicken Wings?

The spiciness comes from cayenne pepper and hot sauce. You can adjust these ingredients based on your heat preference for milder or spicier wings.

Final Thoughts

I hope you enjoy making these mouthwatering Cajun Spiced Chicken Wings! They’re not just delicious; they also bring a fun, spicy kick to any gathering. Whether it’s game night or a casual dinner with friends, these wings are sure to impress. Try this recipe today and treat yourself to a burst of flavor!

Print

Cajun Spiced Chicken Wings: A Flavorful, Crispy Delight

Print Recipe

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

Indulge in the perfect blend of bold flavors and crispy texture with these Cajun Spiced Chicken Wings. A favorite in any home kitchen, this recipe combines a smoky garlic kick with a satisfying crunch that appeals to all ages. Whether you’re hosting friends for game night or enjoying a cozy meal at home, these wings are sure to impress. Effortlessly prepared in under an hour, they make for a delightful finger food option that pairs beautifully with your favorite sides. With easy preparation steps and versatile flavor variations, you’ll find yourself making these savory wings again and again!

  • Author: Mennana
  • Prep Time: 15 minutes
  • Cook Time: 40 minutes
  • Total Time: 55 minutes
  • Yield: Serves approximately 6 people 1x
  • Category: Appetizer
  • Method: Baking
  • Cuisine: Cajun

Ingredients


Scale

  • 3 pounds split chicken wings
  • 2 tablespoons baking powder
  • 3 teaspoons kosher salt
  • 1 teaspoon black pepper
  • 1 tablespoon smoked paprika
  • 2 teaspoons garlic powder
  • 2 teaspoons dried oregano
  • 1 teaspoon cayenne pepper
  • 1 teaspoon dried thyme
  • 2 tablespoons butter (or vegan butter)
  • ¼ cup hot sauce
  • 1 tablespoon coconut aminos

Instructions

  1. Preheat oven to 425°F (220°C) and prepare a wire rack on a lined baking sheet.
  2. Pat chicken wings dry thoroughly for optimal crispiness.
  3. In a large bowl, combine wings with baking powder, salt, black pepper, smoked paprika, garlic powder, oregano, cayenne pepper, and thyme until evenly coated.
  4. Arrange wings in a single layer on the wire rack.
  5. Bake for 20 minutes; flip and bake for another 20 minutes; flip once more and bake for an additional 5-10 minutes until crispy.
  6. Melt butter in a saucepan; add hot sauce and coconut aminos; simmer for five minutes.
  7. Toss baked wings in the sauce until well-coated; garnish and serve immediately.

Nutrition

  • Serving Size: 4 wings (120g)
  • Calories: 340
  • Sugar: 0g
  • Sodium: 840mg
  • Fat: 22g
  • Saturated Fat: 6g
  • Unsaturated Fat: 16g
  • Trans Fat: 0g
  • Carbohydrates: 2g
  • Fiber: 0g
  • Protein: 30g
  • Cholesterol: 100mg

Did you make this recipe?

Share a photo and tag us — we can’t wait to see what you’ve made!

window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.sweetfamilytable.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:”809b023a93″,”postId”:4039};
window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}

if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}

const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}

e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};

document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);

(function(){

var bothEquals = function( d1, d2, D ) {
var ret = 0;
if (d1<=D) {
ret++;
}
if (d2<=D) {
ret++;
}
return ret === 2;
};

var frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)/(d1+d2);if(x===m){if(d1+d2d2){d2=D+1;}else {d1=D+1;}break}else if(xD){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-AD){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]};

window.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(“%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D”));

window.tastyRecipesFormatAmount = function(amount, el) {
if ( parseFloat( amount ) === parseInt( amount ) ) {
return amount;
}
var roundType = ‘frac’;
if (typeof el.dataset.amountShouldRound !== ‘undefined’) {
if (‘false’ !== el.dataset.amountShouldRound) {
if ( ‘number’ === el.dataset.amountShouldRound ) {
roundType = ‘number’;
} else if (‘frac’ === el.dataset.amountShouldRound) {
roundType = ‘frac’;
} else if (‘vulgar’ === el.dataset.amountShouldRound) {
roundType = ‘vulgar’;
} else {
roundType = ‘integer’;
}
}
}
if (‘number’ === roundType) {
amount = Number.parseFloat(amount).toPrecision(2);
} else if (‘integer’ === roundType) {
amount = Math.round(amount);
} else if (‘frac’ === roundType || ‘vulgar’ === roundType) {
var denom = 8;
if (typeof el.dataset.unit !== ‘undefined’) {
var unit = el.dataset.unit;
if ([‘cups’,’cup’,’c’].includes(unit)) {
denom = 4;
if (0.125 === amount) {
denom = 8;
}
if (“0.1667″ === Number.parseFloat( amount ).toPrecision(4)) {
denom = 6;
}
}
if ([‘tablespoons’,’tablespoon’,’tbsp’].includes(unit)) {
denom = 2;
}
if ([‘teaspoons’,’teaspoon’,’tsp’].includes(unit)) {
denom = 8;
}
}
var amountArray = frac.cont( amount, denom, true );
var newAmount = ”;
if ( amountArray[1] !== 0 ) {
newAmount = amountArray[1] + ‘/’ + amountArray[2];
if (‘vulgar’ === roundType) {
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {
newAmount = vulgar;
}
});
}
}
if ( newAmount ) {
newAmount = ‘ ‘ + newAmount;
}
if ( amountArray[0] ) {
newAmount = amountArray[0] + newAmount;
}
amount = newAmount;
}
return amount;
};

window.tastyRecipesUpdatePrintLink = () => {

const printButton = document.querySelector( ‘.tasty-recipes-print-button’ );

if ( ! printButton ) {
return;
}

const printURL = new URL( printButton.href );
const searchParams = new URLSearchParams( printURL.search );

const unitButton = document.querySelector( ‘.tasty-recipes-convert-button-active’ );
const scaleButton = document.querySelector( ‘.tasty-recipes-scale-button-active’ );

let unit = ”;
let scale = ”;

if ( unitButton ) {
unit = unitButton.dataset.unitType;
searchParams.delete(‘unit’);
searchParams.set( ‘unit’, unit );
}

if ( scaleButton ) {
scale = scaleButton.dataset.amount;
searchParams.set( ‘scale’, scale );
}

const paramString = searchParams.toString();
const newURL = ” === paramString ? printURL.href : printURL.origin + printURL.pathname + ‘?’ + paramString;
const printLinks = document.querySelectorAll( ‘.tasty-recipes-print-link’ );

printLinks.forEach( ( el ) => {
el.href = newURL;
});

const printButtons = document.querySelectorAll( ‘.tasty-recipes-print-button’ );
printButtons.forEach( ( el ) => {
el.href = newURL;
});
};

document.addEventListener( ‘DOMContentLoaded’, () => {

if ( ! window.location.href.includes( ‘/print/’ ) ) {
return;
}

const searchParams = new URLSearchParams( window.location.search );

const unit = searchParams.get( ‘unit’ );
const scale = searchParams.get( ‘scale’ );

if ( unit && ( ‘metric’ === unit || ‘usc’ === unit ) ) {
document.querySelector( ‘.tasty-recipes-convert-button[data-unit-type=”‘ + unit + ‘”]’ ).click();
}

if ( scale && Number(scale) > 0 ) {
document.querySelector( ‘.tasty-recipes-scale-button[data-amount=”‘ + Number(scale) + ‘”]’ ).click();
}
});
}());

(function(){
var buttonClass = ‘tasty-recipes-scale-button’,
buttonActiveClass = ‘tasty-recipes-scale-button-active’,
buttons = document.querySelectorAll(‘.tasty-recipes-scale-button’);
if ( ! buttons ) {
return;
}

buttons.forEach(function(button){
button.addEventListener(‘click’, function(event){
event.preventDefault();
var recipe = event.target.closest(‘.tasty-recipes’);
if ( ! recipe ) {
return;
}
var otherButtons = recipe.querySelectorAll(‘.’ + buttonClass);
otherButtons.forEach(function(bt){
bt.classList.remove(buttonActiveClass);
});
button.classList.add(buttonActiveClass);

var scalables = recipe.querySelectorAll(‘span[data-amount]’);
var buttonAmount = parseFloat( button.dataset.amount );
scalables.forEach(function(scalable){
if (typeof scalable.dataset.amountOriginalType === ‘undefined’
&& typeof scalable.dataset.nfOriginal === ‘undefined’) {
if (-1 !== scalable.innerText.indexOf(‘/’)) {
scalable.dataset.amountOriginalType = ‘frac’;
}
if (-1 !== scalable.innerText.indexOf(‘.’)) {
scalable.dataset.amountOriginalType = ‘number’;
}
Object.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {
if (-1 !== scalable.innerText.indexOf(vulgar)) {
scalable.dataset.amountOriginalType = ‘vulgar’;
}
});
if (typeof scalable.dataset.amountOriginalType !== ‘undefined’) {
scalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;
}
}
var amount = parseFloat( scalable.dataset.amount ) * buttonAmount;
amount = window.tastyRecipesFormatAmount(amount, scalable);
if ( typeof scalable.dataset.unit !== ‘undefined’ ) {
if ( ! scalable.classList.contains(‘nutrifox-quantity’) ) {
if ( ! scalable.classList.contains(‘nutrifox-second-quantity’) ) {
amount += ‘ ‘ + scalable.dataset.unit;
}
}
}
scalable.innerText = amount;
});

var nonNumerics = recipe.querySelectorAll(‘[data-has-non-numeric-amount]’);
nonNumerics.forEach(function(nonNumeric){
var indicator = nonNumeric.querySelector(‘span[data-non-numeric-label]’);
if ( indicator ) {
nonNumeric.removeChild(indicator);
}
if ( 1 !== buttonAmount ) {
indicator = document.createElement(‘span’);
indicator.setAttribute(‘data-non-numeric-label’, true);
var text = document.createTextNode(‘ (x’ + buttonAmount + ‘)’);
indicator.appendChild(text);
nonNumeric.appendChild(indicator);
}
});

window.tastyRecipesUpdatePrintLink();
});
});
}());

window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}

const cookModes = document.querySelectorAll(this.cookModeSelector);

if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});

window.TastyRecipes = window.TastyRecipes || {};

window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}

this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );

setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );

const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}

this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}

const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );

this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );

},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};

window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );

xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}

failure( xhr );
};

xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();

for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};

window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;

this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}

window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}

if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );

// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );

if ( ! data.count ) {
return;
}

const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}

const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}

if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}

const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}

const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}

const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}

const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}

const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}

// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;

// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;

this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}

const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}

if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}

const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};

(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});

« Previous Post
Black Bean Corn Salad Recipe
Next Post »
Grilled Balsamic Vinaigrette Sandwich Melt: A Flavorful Delight

If you enjoyed this…

Creamy Keto Tuscan Salmon

Creamy Keto Tuscan Salmon

Grilled Chicken Caprese

Grilled Chicken Caprese

Grilled Chicken with Yogurt Sauce

Grilled Chicken with Yogurt Sauce

Primary Sidebar

Browse by Diet

HealthyBudgetKetoQuickVeganCheat Meal
Street Corn Chicken Rice Bowl

Street Corn Chicken Rice Bowl

Grilled Veggie & Mozzarella Sandwiches

Grilled Veggie & Mozzarella Sandwiches

Pumpkin Protein Balls (No-Bake)

Pumpkin Protein Balls (No-Bake)

  • About
  • Contact
  • Disclaimer
  • Homepage
  • PRIVACY POLICY
  • Recipe Index
  • TERMS AND CONDITIONS

© 2026 Sweet Family Table · All Rights Reserved · Created with love by Lalla Mennana · About · Privacy Policy · Terms & Conditions · Disclaimer · Affiliate Disclosure · Contact