最近小颖接了个私活,客户要求用jquery和bootstrap来实现业务需求,小颖总结了下在写的过程中的一下坑,来记录一下

1.动态加载html文件

        switch (_domName) {
case 'firstMenu':
// 首页
$("main").load('home.html');
break
case 'secondMenu':
// 下拉菜单
$("main").load("dropdown.html");
break
case 'thirdMenu':
// 工具提示框
$("main").load("tooltips.html");
break
}

2.语音播报文字、暂停播报

function soundSpeak(text) {
const msg = new SpeechSynthesisUtterance();
msg.text = text; //播放文案
msg.volume = '1'; // 声音的音量,区间范围是0到1,默认是1。
msg.rate = '1'; // 语速,数值,默认值是1,范围是0.1到10,表示语速的倍数,例如2表示正常语速的两倍。
msg.pitch = '0'; // 表示说话的音高,数值,范围从0(最小)到2(最大)。默认值为1。
msg.lang = 'zh-cn'; // 使用的语言,字符串, 例如:"zh-cn"
return msg;
}
var sound = window.speechSynthesis; // 定义局部变量
//播放
function playText(text) {
sound.speak(soundSpeak(text));
} //停止
function stopSpeak() {
$('.open_voice').removeClass('active');
$('.open_voice').attr("src", 'img/horn.png');
sound.cancel();
}

当切换菜单时需判断当前是否在播放

        if (sound.speaking) {
stopSpeak();
}

点击播放图标开始播放文字并切换图标

    // 语音播放文字
$("main").delegate("img.open_voice", "click", function () { //delegate给后加的节点绑定事件
if ($(this).hasClass('active')) {
stopSpeak();
} else {
$(this).addClass('active');
$(this).attr("src", 'img/horn_close.png');
playText($('.txt-box').text());
}
});

默认:

点击后:

再次点击后图标变成默认状态

3.使用 $(document).load("dropdown.html"); 动态加载的元素,要给其子元素添加点击事件时使用以下方法是不可行的:

    $('img.open_voice').click(function(){

    })

需使用以下放发才能绑定其点击事件:

方法一:

    $("main").delegate("img.open_voice", "click", function () {     //delegate给后加的节点绑定事件

    });

方法二:

    $(document).on("click", "img.open_voice", function () {     //给后加的节点绑定事件
alert(111111)
});

4.bootstrap 导航切换标记当前菜单

    // 切换一级菜单
$('p.nav-link').click(function () {
var _childMenu = $('.dropdown-item.menu-child.active').attr('name');
var _domName = $(this).attr('name');
// 切换菜单时移除上一个菜单的子菜单选中类名
if (_childMenu && _domName && _childMenu != _domName) {
$('.dropdown-item.menu-child').removeClass('active');
}
$('p.nav-link.active').removeClass('active');
$(this).addClass('active');
if (sound.speaking) {
stopSpeak();
}
switch (_domName) {
case 'firstMenu':
// 首页
$("main").load('home.html');
break
case 'secondMenu':
// 下拉菜单
$("main").load("dropdown.html");
break
case 'thirdMenu':
// 工具提示框
$("main").load("tooltips.html");
break
}
});

5.bootstrap工具提示框显、隐

点自己显示,点其他地方隐藏

    $('body').click(function () {
$("[data-toggle='popover']").popover('hide');
}) // 提示框点击事件
$("main").delegate(".tooltips-box span", "click", function (e) {
e.stopPropagation();
$('.tooltips-box span').removeClass('active_toggle');
$(this).addClass('active_toggle');
$("[data-toggle='popover']").popover('hide');
$(this).popover('show');
})

最新文章

  1. linux中用户、组的管理(密码管理、权限管理及其修改用户、组)(转)
  2. objc@interface的设计哲学与设计技巧
  3. 做一个高效的IOS开发工程师
  4. 第三方MMDrawerController的使用 抽屉视图+(SUNSlideSwitchView)进度条手势滑动效果实现
  5. Python核心编程-闭包
  6. GL_GL系列 - 总账系统基础(概念)
  7. 转载:Windows Phone 8.1 投影我的屏幕使用教程
  8. Java 文件名操作的相关工具类
  9. Linux系统各发行版镜像下载
  10. bzoj1036 [ZJOI2008]树的统计
  11. Appium python自动化测试系列之appium环境搭建(二)
  12. JavaScript DOM 高级程序设计读书笔记一
  13. Python_dict部分功能介绍
  14. 012.Docker私有仓库多Harbor同步部署
  15. c++ 动态判断基类指针指向的子类类型(typeid)
  16. 强制ubuntu登陆用户退出
  17. 关于 uboot 的异常向量表
  18. CNN网络架构演进
  19. e838. 使JTabbedPane中的卡片能用按键的方式选取
  20. 安装VisualSVN Server 报错The specified TCP port is occupied

热门文章

  1. ShadeRec类定义
  2. React报错之Cannot assign to 'current' because it is a read-only property
  3. 层次分明井然有条,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang包管理机制(package)EP10
  4. Spring 03 切面编程
  5. Dart 异步编程(三):详细认识
  6. 自动化选课(Python + selenium
  7. rcu的学习记录
  8. 【python】pandas 索引操作
  9. flask-restful使用指南
  10. KingbaseES V8R6兼容Oracle的exp-imp导出导入工具使用