javascript - 根据类值更改颜色

标签 javascript jquery

我有一个非常简单的脚本,我想根据它所说的改变文本的颜色。

  $(document).ready(function () {

    if ($('.js-stock-level').val() == 'Sorry Not In Stock') {
        $('.js-stock-level').css({ 'color': 'red', 'font-weight' : 'bold' });
    }
    else {
        $('.js-stock-level').css({ 'color': 'green', 'font-weight' : 'bold' });
    }
});

<p class="js-stock-level">Sorry Not In Stock</p>
<p class="js-stock-level">12 in Stock</p>

以编程方式,我试图实现的目标是有意义的,但它不起作用。我觉得这与页面上的多个类有关,而 jQuery 不知道要选择什么元素。

编辑

这是 Razor

@if (item.StockLevel == 0)
                    {
                        <p class="js-stock-level">
                            @item.StockText
                        </p>
                    }
                    else
                    {
                        <p class="js-stock-level">
                            @item.StockText
                        </p>
                        <p>£@item.Price inc VAT</p>

                        <span>Quantity: </span><input type="number" style="width:35px" value="1" min="1" /><br /><br />
                        <button class="btn btn-primary">Add to basket</button>
                    }

最佳答案

说明

如果您想根据其他属性更改元素的某些 CSS 属性(例如示例中的文本值),您可以使用 .css(propertyName, function) .

但是,为了简化元素的样式,我建议使用 CSS 类。为了更改元素的类,我们将使用另一个 jQuery 方法,.addClass(function) .

示例 1 - 使用 .css(propertyName, function)

$(document).ready(function() {

  $('.js-stock-level').css('color', function(elm) {
    var text = $(this).text();
    return (text == 'Sorry Not In Stock' ? 'red' : 'green');
  });

});
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

<p class="js-stock-level">Sorry Not In Stock</p>

<p class="js-stock-level">12 in Stock</p>

示例 2 - 使用 .addClass(function)

var NOT_IN_STOCK_TEXT = 'Sorry Not In Stock',
  NOT_IN_STOCK_CLASS = 'not-in-stock';

$(document).ready(function() {

  $('.js-stock-level').addClass(function() {
    return $(this).text() === NOT_IN_STOCK_TEXT ? NOT_IN_STOCK_CLASS : '';
  });

});
.js-stock-level {
  color: green;
}
.js-stock-level.not-in-stock {
  color: red;
  font-weight: bold;
}
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

<p class="js-stock-level">Sorry Not In Stock</p>

<p class="js-stock-level">12 in Stock</p>

关于javascript - 根据类值更改颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32935537/

相关文章:

jquery - 当 jQuery 用于事件时,Chrome 会泄漏内存吗?

javascript - AngularJS 警报服务 : fading out ng-repeat item

javascript - 使用 ES6 的属性简写通过 typescript 传递对象并避免在参数前面加上接口(interface)名称的简化方法?

javascript - 双击而不选择内容

用于计算文本输入字段值的 Javascript

javascript - 为什么我们需要在创建对象时额外添加 'get' 和 'set'?

Javascript OnPageUnload - 在 "leave page"上必须调用附加方法

javascript - Bootstrap 3 旋转木马指示器无法正常工作且无法自动滑动

jquery - 多个 SlideToggle jQuery

带有 cookie 的 jQuery 选项卡 - 如果 cookie 存在?