2016-11-23 1 views
0

Wie kann ich Variablen und Strings verwende diese einfachenjquery wie kann ich Variablen und Strings verwenden, um diese einfachen

 $('#department_categories h4:contains("Kitchen")').parent().css('background-image', 'url("some-image.jpg'); 
     $('#department_categories h4:contains("Bathroom")').parent().css('background-image', 'url("some-image.jpg'); 
     $('#department_categories h4:contains("Decorating")').parent().css('background-image', 'url("some-image.jpg'); 
     $('#department_categories h4:contains("DIY")').parent().css('background-image', 'url("some-image.jpg'); 
     $('#department_categories h4:contains("Garden")').parent().css('background-image', 'url("some-image.jpg'); 
     $('#department_categories h4:contains("Homeware")').parent().css('background-image', 'url("some-image.jpg'); 
     $('#department_categories h4:contains("Lighting")').parent().css('background-image', 'url("some-image.jpg'); 
     $('#department_categories h4:contains("Christmas")').parent().css('background-image', 'url("some-image.jpg'); 
+1

Bette auf [Code Review] stellen (http://codereview.stackexchange.com/) – mmushtaq

Antwort

2
var homeObjects = ["Kitchen", "Bathroom", "Decorating","DIY","Garden","Homeware","Lighting","Christmas"]; 
var i; 
for(i=0;i<homeObjects.length;i++) 
{ 
    $('#department_categories h4:contains('+homeObjects[i]+'])').parent().css('background-image', 'url("some-image.jpg'); 
} 
+0

Dank @jignesh Ich habe Bilder für jede Kategorie. In obigem Beispiel funktioniert homeObjects (var)? –

0

Unter der Annahme, dass Sie nur diese pro Seite einmal verwenden zu machen, können Sie machen Sie sicher, dass der Dateiname auf dem <h4/> Text korreliert:

var backgroundImage = '/path/to/image/' + $('#department_categories h4').text() + '.jpg'; 
$('#department_categories h4').parent().css('background-image', 'url("' + backgroundImage + '")'); 

wenn Sie jedoch eine Schleife durch mehrere verschiedene <h4/> in verschiedenen übergeordneten Container zu wollen, können Sie laufen eine jede Schleife:

$('#department_categories h4').each(function() { 
    var backgroundImage = '/path/to/image/' + $(this).text() + '.jpg'; 
    $(this).parent().css('background-image', 'url("' + backgroundImage + '")'); 
}); 

Ich würde vorschlagen, einen regulären Ausdruck verwenden, wenn einige Ihrer Titel haben Leer- oder Sonderzeichen:

var backgroundImage = '/path/to/image/' + $('#department_categories h4').text().replace(/\W+/g, '-') + '.jpg'; 
$('#department_categories h4').parent().css('background-image', 'url("' + backgroundImage + '")'); 

ODER

$('#department_categories h4').each(function() { 
    var backgroundImage = '/path/to/image/' + $(this).text().replace(/\W+/g, '-') + '.jpg'; 
    $(this).parent().css('background-image', 'url("' + backgroundImage + '")'); 
}); 

Persönlich, wenn Sie gehen zu tun dies über mehrere <h4/> übergeordneten Container, würde ich den Text klein geschrieben:

$('#department_categories h4').each(function() { 
    var backgroundImage = '/path/to/image/' + $(this).text().replace(/\W+/g, '-').toLowerCase() + '.jpg'; 
    $(this).parent().css('background-image', 'url("' + backgroundImage + '")'); 
}); 

CodePen Demo

+0

Du bist ein Star @Daerik, arbeitete ein Vergnügen! Eine weitere Frage - Atm die Bindestriche beginnen und enden auf jedem Dateinamen (d. H. -image-.jpg), Wie füge ich einen statischen Namen vor und nach? Oder aufhören zu regexp Bindestriche am Anfang oder am Ende setzen? –

+0

Mach dir keine Sorgen, ich habe es herausgefunden. –

Verwandte Themen