为列表选择类并仅设置其中一个类
Choosing the class for the list and setting only one of them
我想使用从列表中选择的字体名称设置一个类。当用户选择不同的字体时,将删除现有类并设置新类。
这是我的越野车 JS:
$(document).on('click', '.fonts-container ul li', function(){
if ( $('.font2').hasClass("active")) {
var fontName = $(this).data("fontname");
$(this).closest(".editor").find('.text').toggleClass(fontName);
}
}
});
以下是列表:
<ul >
<li data-fontname="Aclonica">Aclonica</li>
<li data-fontname="Acme">Acme</li>
<li data-fontname="Alegreya">Alegreya</li>
</ul>
所以在结果元素文本有两个类:.text 和字体名称
我建议跳过类交换并使用jQuery设置内联字体系列样式属性。使用 data-fontname
属性指定有效的字体名称而不是类名,并直接设置它们。这样,font-family
规则就会被简单地覆盖,因此您无需先取消设置以前的值。
此外,在包含列表的 ul
元素上插入 data-target
属性,以便列表对标记更改变得不那么敏感。
<ul data-target=".editor1">
<li data-fontname="Aclonica">Aclonica</li>
<li data-fontname="Acme">Acme</li>
<li data-fontname="Alegreya">Alegreya</li>
</ul>
$('.fonts-container > ul > li').on('click', function(){
var $el = $(this);
var fontName = $el.data('fontname');
var $target = $($($el.parent()).data('target'));
$target.css('font-family', fontName);
});
您的JS中有一些无法解释的部分似乎超出了您的问题范围,因此为了清楚起见,我省略了这些部分。
你还没有给出所有的html片段。下面是一个模拟演示: http://jsfiddle.net/m2rHL/
$(document).on('click', '.fonts-container ul li', function(){
var fontName = $(this).data("fontname");
//alert(fontName + " " + $(".editor").find('.text').length);
$(".editor").find('.text').addClass(fontName); });
相关文章:
- 而循环只设置php中输入字段中的第一个值
- 在数组中的一个元素上设置多个值
- 如何将Date字段设置为等于另一个Date+Int值,该值表示月份值
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 一个页面上有多个Ace编辑器,没有预先设置元素
- 可以't将sessionStorage设置为Javascript中的一个变量
- 为两个ID设置一个变量的正确语法
- 使用D3.js和GeoJson在地图上的某些坐标上设置一个小图像
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- 当张贴到数据库时,I'我得到了一个“;可以't在它们被发送错误之后设置报头”;
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- 使用 JavaScript 一次为一个元素设置多个属性
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- JQuery在设置另一个值之前将附加值设置为null
- 从另一个设置引导日期时间选择器的 minDate
- jQuery插件开发执行一个设置,这是一个函数
- 读取一个设置文件并在node.js中计算
- 保持重新加载页面,直到一个设置文本出现(对于greasekit)
- 我可以在Uploadifive中添加一个设置,让图片按顺序上传吗?
- 将字符的颜色从一个设置为另一个