jquery+bootstrap学习笔记

最近小颖接了个私活,客户要求用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');
    })