jq编写插件

html

<div id="addSelect">
    <i><em>作品类型</em></i>
</div>
<script type="text/javascript">
 // 下拉框引用
    $("#addSelect").mySelect({ "data": ["请选择作品类型", "文字作品", "视听作品", "美术作品", "摄影作品", "音乐作品"] });
//下拉框选中值
$("#addSelect").mySelect("getVal")
//下拉框清除验证
$("#addSelect").mySelect("clearVerificate");
</script>

js

//jq封装下拉列表
// 立刻执行函数
; (function ($) {
    function mySelectFn(elem, options) {
        //创建一些默认值,拓展任何被提供的选项
        this.defaults = { data: [], ele: elem };
        this.opts = $.extend({}, this.defaults, options);
        this.init()
    }
    mySelectFn.prototype = {
        init: function () {
            var dom = '<div class="mySelectBox" id="mySelectBox">'
                + '<div class="mySelect" id="selectedVal">' + this.opts.data[0] + '</div>'
                + '<ul class="myOptionsBox" id="myOptionsBox">';
            $.each(this.opts.data, function (i, item) {
                dom += '<li>' + item + '</li>';
            })
            dom += '</ul></div>'
                + '<span class="inputTips" style="display: none;">请选择作品类型!</span>';
            this.opts.ele.append(dom);
            // 打开或者关闭选项
            $("body").on("click", function (e) {
                if ($(e.target).hasClass("mySelect") == true) { //点击下拉框
                    $("#myOptionsBox").css("display") == "none" ? $("#myOptionsBox").show() : $("#myOptionsBox").hide();
                    return;
                }
                $("#myOptionsBox").hide();
            });
            // 下拉框选中
            $("#mySelectBox li").click(function (e) {
                $(this).addClass("selectAct").siblings().removeClass("selectAct");
                $("#selectedVal").text($(this).text());
            });
        },
        getVal: function () {//获取下拉框值
            return $("#selectedVal").text();
        },
        setVal: function (val) {//设置下拉框值
            $("#selectedVal").text(val);
            $("#myOptionsBox li").each(function (i, item) {
                if ($(item).text() == val) {
                    $(item).addClass("selectAct").siblings().removeClass("selectAct");
                }
            });
        },
        getVerificate: function () {
            $("#mySelectBox").siblings(".inputTips").show();
        },
        clearVerificate: function () {
            $("#mySelectBox").siblings(".inputTips").hide();
            this.setVal("请选择作品类型");
        }
    }
    $.fn.mySelect = function (options) {
        // 实现链式调用
        // return this.each(function () {
        // 缓存this对象
        var $this = $(this);
        var instance = $this.find("#mySelectBox").length > 0;
        // 判断实例是否存在,不存在则创建对象,并将该对象及配置项传入
        if (!instance) {
            instance = new mySelectFn($this, options);
        }
        // 在外部可以通过$(selection).mySelect("getVal")
        if ($.type(options) === "string") {
            if (options.indexOf("(") > -1 && options.indexOf(")") > -1) {
                return eval("mySelectFn.prototype." + options);
            }
            if (options.indexOf("(") == -1 && options.indexOf(")") == -1) {
                return mySelectFn["prototype"][options]();
            }

        }
        // });
    };
})(jQuery);

 css

.mySelectBox {
    width: 100%;
    line-height: 0.36rem;
    border: 1px solid #dcdfe6;
    border-radius: 4px;
    position: relative;
    color: #333333;
}
.mySelect {
    width: 100%;
    padding-right: 0.48rem;
    height: 0.36rem;
    line-height: 0.36rem;
    position: relative;
}
.mySelect:before {
    content: "";
    width: 0.18rem;
    height: 0.1rem;
    background: url(../image/addAct.png) no-repeat 0/100% 100%;
    position: absolute;
    top: 50%;
    margin-top: -0.05rem;
    right: 0;
}
.myOptionsBox {
    display: none;
    box-sizing: border-box;
    width: 100%;
    /* height: 2rem; */
    border: 1px solid rgb(59, 59, 59);
    overflow: hidden auto;
    background: rgb(255, 255, 255);
    box-shadow: 0px 2px 8px 4px rgb(108 108 108 / 26%);
    position: absolute;
    top: 0.4rem;
    right: -0.48rem;
    text-align: left;
    z-index: 2;
}
.myOptionsBox li {
    display: block;
    white-space: nowrap;
    line-height: 0.6rem;
    padding: 0px 0.2rem;
}
.myOptionsBox .selectAct {
    color: #fff;
    background: #cfefff;
}
.myOptionsBox li::selection,
.myOptionsBox li:hover {
    color: #fff;
    background: #cfefff;
}
.myOptionsBox li:focus-visible {
    outline: -webkit-focus-ring-color auto 1px;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 `jQuery` 和 `Ajax` 实现微信公众号模板消息的发送。 以下是一个简单的示例: 1. HTML 页面中创建一个表单,包含发送模板消息所需的参数: ```html <form id="send-form"> <input type="hidden" name="openid" value="..."> <input type="hidden" name="template_id" value="..."> <input type="hidden" name="url" value="..."> <input type="hidden" name="data" value='{"key1": {"value": "...", "color": "#173177"}, "key2": {"value": "...", "color": "#173177"}}'> <button type="submit">发送模板消息</button> </form> ``` 2. 使用 `jQuery` 监听表单的提交事件,发送 `Ajax` 请求: ```javascript $(document).on('submit', '#send-form', function(e) { e.preventDefault(); // 阻止表单默认提交行为 $.ajax({ url: 'send.php', // 发送模板消息的 PHP 接口地址 type: 'POST', data: $(this).serialize(), dataType: 'json', success: function(resp) { if (resp.errcode === 0) { alert('发送成功'); } else { alert('发送失败:' + resp.errmsg); } }, error: function(xhr, status, err) { alert('发送失败:' + err); } }); }); ``` 3. 在服务器端编写 `send.php` 接口,使用 `curl` 发送模板消息: ```php <?php $access_token = 'YOUR_ACCESS_TOKEN'; // 替换为实际的 access_token $openid = $_POST['openid']; $template_id = $_POST['template_id']; $url = $_POST['url']; $data = json_decode($_POST['data'], true); $url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' . $access_token; $post_data = [ 'touser' => $openid, 'template_id' => $template_id, 'url' => $url, 'data' => $data, ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); echo $response; ``` 注意:您需要替换 `$access_token` 为实际的 access_token。此外,上述示例只是一个简单的参考,实际应用中还需要进行参数验证、错误处理等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值