javascript - 一段 jQuery 代码是否还有优化或改进其它实现方式的空间?
PHPz
PHPz 2017-04-11 09:10:12
[JavaScript讨论组]

代码如下

/**--------------------
 * - 表单元素值自动选择
 * --------------------
 * @param name 表单元素name值
 * @param value 想要该表单元素自动选择的数据值
 * @author Talent 2016-11-22
 **/
function setInputSelected(name,value){
    var input = $("[name='" + name + "']");
    var inputFirst = input.first();

    if (inputFirst.is(":radio")) {
        input.filter("[value=" + value + "]").prop("checked", true);
    } else if (inputFirst.is(":checkbox")) {
        input.prop("checked", false);
        $(value).each(function() {
            input.filter("[value=" + this + "]").prop("checked", true);
        });
    } else {
        input.val(value);
    }
}

应用场景

一般多为PHP系统的信息修改页面,页面中的checkbox、radio、select,需要根据得到的当前数据的一些值来让他们自动选择上;如下图

这个页面有N个select和一个radio,所以从数据库获取信息后调用上面的方法传值使他们自动选择;如下在页面底部一次传name调用。

产生的问题:

  1. 页面中有多个元素需要自动选择的时候,有多少setInputSelected就要调用多少次,能否改进成一次调用,搞定所有呢;比如我传name和value的数组进去。

  2. 抛开问题1,上面的代码还有没有优化空间。

PS:感谢各位大神指教,最近在SF学到了好多东西。

PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网
var data={
"pid":0,
"is_menu":0,
"is_dev":0,
"status":0,
}

$("input").each(function(){
    var name=$(this).attr("name");
    $(this).val(data[name]);
    if($(this).is(":radio") || $(this).is(":checkbox"))
    {
        $(this).attr("checked",true);
    }
});
巴扎黑

直接 $(元素).val(数据)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号