记录下项目中常用到的JavaScript/JQuery代码一(大量实例)


 一直没有系统学习Javascript和Jquery,每次都是用到的时候去搜索引擎查,感觉效率挺低的。这边把我项目中用的的记录下,想到哪写哪,有时间再仔细整理。

当然,由于我主要是写后端java开发,而前端这几年风起云涌,发展很快,新的技术框架层出不穷,我也就没把心思放这块,目前公司只有前端,没有交互开发工程师,所以我们只能硬顶。

写出来的前端代码很可能没有什么模块意识,也比较混乱,有错误特别正常,希望你看到了在留言中指出来,以免误导他人,谢谢。

 

0、点击事件的事件函数一般要加return false,尤其是遇到在表单内部。很多小坑就是这么来的

        
提示
提示
    //登录注册-登录 $(".loginBtn").click(function () { var username = $('#username').val(); var password = $('#password').val(); if (username.trim().length == 0) { layer.msg('请输入用户名', {icon: 2}); return false; } if (password.trim().length == 0) { layer.msg('请输入密码', {icon: 2}); return false; } var param = {}; param.username = username; param.password = password; $.ajax({ type: 'POST', dataType: "json", data: param, url: "***.do",//请求的action路径 error: function (data) {//请求失败处理函数 console.log("请求失败11"); }, success: function (data) { if (data.state == 2) { location.href = "***"; } else { layer.msg(data.msg, {icon: 2}); return; } } }); return false; })

1、id定位,查找其下的子元素,并绑定事件

    $("#tableForSubTraderSearch").find("input:eq(1)").on("click", function () {
        initPaganation();
    });

2、清空表格的除了表头外的其他行

  $(".s-tab-table  tr:not(:first)").html("");

3、查看内容中是否包含指定字符串

        var html = $currentAccount.html();
        if (html.indexOf("本账户") >= 0) {
            return {checkedSubAccountId: null, isCalcSubTraders: false};
        }

4、前端搜索:根据主账户查询到其管理的多个子账户后,输入框中根据输入的关键字对子账户过滤

初始ajax查询子账户时,备份查到的列表的html内容:

var subAccountsSearchCopy = null;
function searchSubAccounts() {
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "*****",
            data: {},
            success: function (data) {
                if (data.state != 0) {
                    return;
                }

                var $qzfk = $(".qzfk-azmss-c");
                $qzfk.html("");
                var totalContent = "";
                for (var i = 0; i < data.list.length; i++) {
                    var item = data.list[i];
                    var id = "qzfk-c1-" + i;
                    var content = '  ';
                    totalContent += content;
                }
                var inputButton = '  ';
                totalContent += inputButton;
                $qzfk.html(totalContent);//将组装的html内容塞进列表
                //备份搜索到的子账户
                subAccountsSearchCopy = totalContent;
            }
        });
    }

后续进行过滤时,根据关键字过滤出需要的子列表,放入原来位置

  //绑定input事件,获取过滤词
    $(".qzfk-azmss .qzfk-azmss-title .searchDiv").find("input:eq(0)").on("input .s-tab-table-divpropertychange",function () {
        var subAccountsSearch = $(".qzfk-azmss-c");
        subAccountsSearch.html(subAccountsSearchCopy);

        var accountFilter = $(this).val().trim();
        var filteredArray = [];
        if (accountFilter == ''){
            return;
        }
        subAccountsSearch.find("span").each(function (index, domEle) {
            var accountName = $(this).find("input").attr("data");
       //被过滤出来的元素单独放到一个数组
if (accountName.indexOf(accountFilter) >= 0){ filteredArray.push($(this).clone()); } }); subAccountsSearch.html(""); for (var i = 0; i < filteredArray.length; i++){ filteredArray[i].appendTo(subAccountsSearch); } });

5、layer弹出框


    function showMessage(msg,domObj) {
        layer.tips(msg,domObj,{time:1000});
    }

6、each循环

    $(".qzfk-rDiv").each(function () {
        if (!$(this).find("i").hasClass("qzfk-mess-rotateI")) {
            $(this).find(".qzfk-mess").closest(".qzfk-mess").css("height", "auto")
            var cqh = $(this).find(".qzfk-mess").closest(".qzfk-mess").css("height")
            $(this).find(".qzfk-mess").closest(".qzfk-mess").css("height", "30px")
            $(this).find(".qzfk-mess").closest(".qzfk-mess").animate({
                "height": cqh
            }, 300)
        }
    })

7、常见函数

toFixed(2)
html(str)
val()
split()
parseFloat()
removeClass()
addClass()
hide()
show()
attr()
closest()
eq()
text()
trim()
appendTo()
remove()

$(document).ready(function () {
        sth();
})
//启定时器
var ss = setInterval(function () {
    sth();
}, 60 * 1000);
//清空定时器
clearInterval(ss);
//重新设置
ss = setInterval(function () {
   sth();
}, 30 * 60 * 1000);

8、选中全部、取消选中全部

$(".checkedAll").click(function () {
        if ($(this).is(":checked")) {
            $(this).closest("table").find("input[type='checkbox']").each(function (index) {
                if($(this).attr("disabled") != "disabled"){
                    $(this).prop("checked", "checked");
                }
            })
        } else {
            $(this).closest("table").find("input[type='checkbox']").removeProp("checked");
        }
    })

9、字符串比较直接用==

var aaa= "设置";
var addOrupdate = $(this).attr("value");
var retracementArray = $(".modal-xgcs input[type=text]");
if (setRectracementTitle == addOrupdate){
   $(".modal-title").html(setRectracementTitle + '');
    retracementArray.eq(0).val("");
    retracementArray.eq(1).val("");
}
与undefined对比
$(this).attr("data") != undefined
 

10、给动态ajax生成的内容加事件,需要用on的方式;需要注意的是,on函数的调用者,也就是下例中的

$('.searchTableDiv table')不能是动态生成的,on函数的第二个参数,表示查找子元素
可参考:http://www.cnblogs.com/imsomnus/p/4512261.html
$('.searchTableDiv table').on('click', 'tr', function (){
        var $this = $(this);
        if (!$this.is(".stockHeader")){
            var stockCode = $this.children().eq(0).text().trim();
            var stockName = $this.children().eq(1).text();
            $('#stockSearch').val(stockCode);
} });

11、选择器使用实例

        var checkedSubAccount = $(".qzfk-azmss input[type=radio]:checked");
     $("#tableForOrg input[type=checkbox]:checked")
     var v1 = parseFloat($(".px-table tr:not('.px-n'):eq(0)").find("td:eq("1")").html());
        $(".s-tab-table  tr:not(:first)").html("");
     $(".rightAlignTable tr td:nth-child(3)")
     if($(this).next().html().trim()==""||$(this).next().hasClass("sxq-dbk-l")){
    return false;
     }
     $(".sxq-dbk li:not(.sxq-dbk-f):not(:last-child)").html("")
     $(".checkedAll").closest("table").find("input[type='checkbox']:not(:first)").each(function (index) {
if (true == $(this).prop("checked")){
     var stockCode = $(this).closest("tr").find(".stockCodeValue a").text();
     stockCodeArray.push(stockCode);
     }
     });
     $(".sxq-dbk").find("li:not(.sxq-dbk-f):not(:last-child)")
     $(this).parent().parent().find("td:eq(1) a")
     $(this).closest("td").prev().find("a")

 12、正则表达式验证输入

var num2digit = /^\d{1,2}(\.\d{1,2})?$/;
function isNum2Digit(num) {
    return num2digit.test(num);
}

if ( isNaN(retraceRange) ){
            showMessage("最大回撤只能为数字", retracementArray.eq(1));
            return false;
}
if (!isNum2Digit(retraceRange)){
    if (isAddRetracement == "update" && $.trim(retraceRange) == ""){

}
else { showMessage("只能输入0-100(不含0,100)间的2位小数", retracementArray.eq(1)); return false; } }

13、刷新当前页面

function refreshPage() {
    $(".flash-btn").on("click", function(){
        console.log("refreshed current page");
        location=location;
    });
}

14、枚举定义

if(typeof COLOR == "undefined"){
    var COLOR = {
        RED:   "#d73732",
        GREEN: "#299b4b",
        PURPLE: "#f022bd",
        YELLOW: "#e6c065",
        WHITE: "#e0e0e0"
    }
}

15、获取url参数

传参时:(为什么用encodeURIComponent,因为中文乱码问题)
iframeEle.find("iframe").attr("src", "**.html?codeArray=" + codeArray+"&indexId=" + index.indexId + "&indexName=" + encodeURIComponent(index.indexName));

function
getUrlParam(name){ //构造一个含有目标参数的正则表达式对象 var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //匹配目标参数 var r = window.location.search.substr(1).match(reg); //返回参数值 if (r!=null) return decodeURIComponent(r[2]); return null; }

16、将a标签href置为无效,定义点击事件

 aaa 
$(".l-qzfk").click(function(){
        do sth;   
        return false;
})

17、根据ajax返回数据动态生成内容

$.ajax({
            type: "POST",
            dataType: "json",
            url: "/***",
            data: {
                currentPage: currentPage,
                pageSize: pageSize,
                filter_subAccountNo: filter.checkedSubAccountId,
                filter_stockCode: filter_stockCode,
                isCalcSubTraders: filter.isCalcSubTraders
            },
            success: responseHandle
});
function responseHandle(data) {
        if (data.state != 0) {
            $(".s-tab-table  tr:not(:first)").html("");
            return;
        }
        var filter = getQueryAccount();
        var isCalcSubTraders = filter.isCalcSubTraders;
        var riskItemsList = data.list;

        if (isCalcSubTraders) {
            $("#tableForOrg  tr:not(:first)").remove();
        } else {
            $("#tableForOrg  tr:not(:first)").remove();
        }
        for (var i = 0; i < riskItemsList.length; i++) {
            var item = riskItemsList[i];

            var $tr = $("");
            var $checkboxTr = $(' "');
            if (item.stopTrading){//停牌
                $checkboxTr.css("opacity",0.2);
                $checkboxTr.find("input").attr("disabled","disabled");
            }

            var $stockCodeTr = $(''+ item.stockCode +'');
            var stopTradingStr = "";
            if (item.stopTrading){
                 stopTradingStr = "(停牌)";
            }
            var $stockNameTr = $(''+ item.stockName + stopTradingStr +'');
            var $carryCostPrice = $("" + parseFloat(item.carryCostPrice).toFixed(2)+ "");
            //增加持仓数量,在持仓成本后面
            var $stockNum = $("" + item.stockNum/100+ "");
            //后台取涨跌幅失败,会返回999,此处显示为空
            var $upDownRate;
            if (item.upDownRate > 998){
                $upDownRate = $("");
            }else {
                $upDownRate = $("" + item.upDownRate.toFixed(2) + "");
            }
            // 涨跌幅:正数为红色、负数为绿色;
            if (item.upDownRate > 0){
                $($upDownRate).css("color", COLOR.RED);
            }else if (item.upDownRate < 0){
                $($upDownRate).css("color", COLOR.GREEN);
            }else {
                $($upDownRate).css("color", COLOR.WHITE);
            }
            //  样本库指标有标识;
            if (item.baseinfo.isBelongBio == '1'){
                $tr.addClass("ybkTr");
            }
            var $retracementProbability = $("" + (item.retracementProbability != null ? parseFloat(item.retracementProbability).toFixed(2) : "") + "");
            var $retracementRange = $("" + (item.retracementRange != null ? parseFloat(item.retracementRange).toFixed(2) : "") + "");
            var $oper = null;
            //如果不是子账户,才能看到这两个按钮
            if (!isCalcSubTraders) {
                if (item.retracementProbability == null) {
                    // 没设置参数
                    $oper = $('');
                } else {
                    $oper = $('');
                }
            }else {
                $oper = $('');
            }
            if (item.stopTrading){
                $oper.find("input").attr("disabled","disabled");
                $oper.css("opacity",0.2);
            }
            if (item.retracementProbability == null || item.retracementRange == null){
                $oper.find("input").eq(1).attr("disabled","disabled");
                $oper.find("input").eq(1).css("opacity",0.2);
            }
            $checkboxTr.appendTo($tr);
            $stockCodeTr.appendTo($tr);
            $stockNameTr.appendTo($tr);
            $carryCostPrice.appendTo($tr);
            $stockNum.appendTo($tr);
            $upDownRate.appendTo($tr);
            $retracementProbability.appendTo($tr);
            $retracementRange.appendTo($tr);

            $oper.appendTo($tr);
            $("#tableForOrg tbody").append($tr);
            //需要预警的tr要改变颜色
            if (item.needWarn == true){
                $($tr).addClass("yujingTr");
                $tr.find("td").eq(1).find("a").css("color", COLOR.WHITE);
                $tr.find("td").eq(2).find("a").css("color", COLOR.WHITE);
            }else {
                $($tr).removeClass("yujingTr");
            }
        }
    }

18、有时,比如需要下载文件,这时候用ajax就不太方便(没研究过),所以这时候一般采用form提交








$("#exportExcel").on("click",function () {
        var filter = getQueryAccount();
        $("#downloadExcel").find("input[name=currentPage]").val("1");
        $("#downloadExcel").find("input[name=pageSize]").val("200");
        $("#downloadExcel").find("input[name=filter_stockCode]").val("");
        $("#downloadExcel").find("input[name=filter_subAccountNo]").val(filter.checkedSubAccountId);
        $("#downloadExcel").find("input[name=isCalcSubTraders]").val(filter.isCalcSubTraders);
        $("#downloadExcel").submit();
})

相关