javascript - 如果值等于 anchor 的文本,则更改其 CSS

标签 javascript jquery

fiddle 1 = http://liveweave.com/gG4EHH
fiddle 2 = http://jsbin.com/zequyilo/1/edit

我有一组 anchor ,单击它们可以更改选定元素的 CSS(在本例中为 font-family 属性)

我想做的是在文本框中输入字体,如果该字体是 anchor 列表中的字体之一,则根据文本更改它的 css。

我想使用类似这样的方法,如果输入值等于 anchor 的文本来更改它的CSS,但不完全确定如何进行。

$('.grab-font-family').on('keyup change', function() {
  $('.grab-typography a').css('backgroundColor', '#444');
  if ( $('.grab-typography a').text() === $(this).val() ) {
     $(this).css('backgroundColor', '#1c1c1c');
  }
});

我使用 title 属性尝试了此方法,但是当我尝试 arial blackandale mono 时, anchor 具有该标题。它的背景没有改变。

$('.grab-font-family').on('keyup change', function() {
  $('.grab-typography a').css('backgroundColor', '#444');
  $(".grab-typography a[title=" + $(this).val() + "]").css('backgroundColor', '#1c1c1c');
});

所以我尝试使用包含选择器。如果我在文本框中输入 a,此方法将更改以 a 开头的所有 anchor 的背景颜色。

$('.grab-font-family').on('keyup change', function() {
  $('.grab-typography a').css('backgroundColor', '#444');
  $(".grab-typography a:contains(" + $(this).val() + ")").css('backgroundColor', '#1c1c1c');
});

最佳答案

filter() 是最可控的方式。您的第一种方法只是拉取集合中第一个元素的 text() 。当集合中有多个元素时,这对于所有 getter 都是相同的。

filter() 将循环遍历所有元素并让您运行更多涉及的条件

确保引用包含空格的字体,否则浏览器会误解它们

$('.grab-font-family').on('keyup change', function() {
  var font=this.value;
  $('.grab-typography a').filter(function(){
     return this.title === font;/* return ones that match font */
  }).css('font-family', '"'+font+'"'});
})

关于javascript - 如果值等于 anchor 的文本,则更改其 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984811/

相关文章:

javascript - Fabric js : SVG cannot import from url

javascript - 将缓存控制设置为外部资源?

javascript - 从段落中删除完整的一个字符串

javascript - 带有日期选择器的复制 html 元素上的 jQuery UI Datepicker

javascript - 浏览器兼容性问题列表?

javascript - jQuery .submit() 方法在 AJAX 调用后发送未定义的内容而不是写入的内容

javascript - 自动扩展行和子行使用钩子(Hook) react 表

javascript - 如何展平嵌套的 JSON?

jquery - 如何在同一页面中拥有多个 jQuery 颜色框

javascript - 显示任何对象的完整 DOM 信息