【问题标题】:jquery how can I use variables and strings to make this simplerjquery如何使用变量和字符串来简化它
【发布时间】:2016-11-23 16:47:48
【问题描述】:

如何使用变量和字符串来简化此操作

      $('#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');

【问题讨论】:

标签: jquery string variables simplify


【解决方案1】:
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');
}

【讨论】:

  • 谢谢@jignesh 我有每个类别的图片。在上面的示例中,homeObjects (var) 是如何工作的?
【解决方案2】:

假设您每页只使用一次,您可以确保文件名与 &lt;h4/&gt; 文本相关:

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

但是,如果您想在不同的父容器中循环多个不同的 &lt;h4/&gt;,您可以运行 each 循环:

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

如果您的某些标题有空格或特殊字符,我建议使用正则表达式:

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

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

就个人而言,如果您要在多个 &lt;h4/&gt; 父容器上执行此操作,我会将文本小写:

$('#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

【讨论】:

  • 你是明星@Daerik,辛苦了!还有一个问题 - Atm 连字符在每个文件名上开始和结束(即 -image-.jpg),如何在前后添加静态名称?或者停止正则表达式在开头或结尾放置连字符?
  • 别担心,我想通了。
猜你喜欢
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2010-12-12
  • 2020-10-25
相关资源
最近更新 更多