JavaScript 开发必须掌握技能(四)- 更好的使用jQuery attr方法

前几篇都是长篇大论,一次看完的确有些费尽,今天简单些,分享一个开发中使用attr() 的技巧,可能大家都没有这样使用过。它配合ES6标准中模板字符串模块使用。简单看下模板字符串它的使用:

// 传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法)。
$('#result').append(
  'There are <b>' + basket.count + '</b> ' +
  'items in your basket, ' +
  '<em>' + basket.onSale +
  '</em> are on sale!'
);

// 上面这种写法相当繁琐不方便,ES6 引入了模板字符串解决这个问题。
$('#result').append(`
  There are <b>${basket.count}</b> items
   in your basket, <em>${basket.onSale}</em>
  are on sale!
`);

这样看着是不是简洁了许多,试想下如果代码很多很长时候,需要检测是否有漏写了那个单引号或者加号等。尤其是我们再写sql语句时,说到些sql语句都懂了对吧!让我们来看下:

let sql = "select id,create_by,user_name,c_name,c_value,is_off,remarks ," +
                "   date_format(create_time,'%Y-%m-%d %H:%i:%s') create_time" +
                " from app_shop_category a" +
                " LEFT JOIN common_user_info b on a.create_by = b.user_id";

let sql1 = ` select id,create_by,user_name,c_name,c_value,is_off,remarks,
                date_format(create_time,'%Y-%m-%d %H:%i:%s') create_time
             from app_shop_category a
             LEFT JOIN common_user_info b on a.create_by = b.user_id`;

关于模板字符串可以到ES6标准 了解更多详细内容

一、attr() 定义和用法

attr() 方法设置或返回被选元素的属性和值。

当该方法用于返回属性值,则返回第一个匹配元素的值。

当该方法用于设置属性值,则为匹配元素设置一个或多个属性/值对。

二、语法

返回属性的值:

$(selector).attr(attribute)

设置属性和值:

$(selector).attr(attribute,value)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
    console.log("图片宽度为:",$("img").attr("width"))  // 图片宽度为: 284
$("button").click(function(){
        $("img").attr("width","500");
        console.log("设置后图片宽度为:",$("img").attr("width"))  // 设置后图片宽度为: 500
    });
});
</script>
</head>
<body>
<img src="img_pulpitrock.jpg" alt="Pulpit Rock" width="284" height="213">
<br>
<button>为图片设置width属性</button>

</body>
</html>

使用函数设置属性和值:

$(selector).attr(attribute,function(index,currentvalue))
$(document).ready(function(){
    $("button").click(function(){
        $("img").attr("width",function(n,v){
            return v-50;
        });
    });
});

设置多个属性和值:

$(selector).attr({attribute:valueattribute:value,...})
$(document).ready(function(){
    $("button").click(function(){
        $("img").attr({width:"150",height:"100"});
    });
});

三、attr() 配合ES6模板字符串的使用

接下来我们看看attr() 配合ES6的使用,示例如下:

在此我们先看看这条语句

"<a onclick='addVersion(" + id + "," + pid + ",\"" + pids + "\",\"" + name + "\",\""+source+"\");'>新增</a>";

在传递参数时拼接的参数,如果我们需要的参数很多时,这方法是不是不安全。

好了不卖关子了下面实现一个简单的分页列表,并对每条记录的操作栏设置配置操作链接,在a标签中我们首先获取本条json数据,将json数据通过data-param="${JSON.stringfy(row)}",通过点击方法中通过$(obj).attr('data-param')返回属性的值,便可拿到放入data-param中的json。转换为json格式数据就可以了。

$('#configList').datagrid({
            url: '...',
            method: 'post',
            rownumbers: true,
            striped: true,
            fitColumns: true,
            border: false,
            fit: true,
            columns:[[
                {field:'user_no',title:'账号',align:'center'},
                {field: "remark", title: "备注",  align: 'center'},
                {field: "operate",title: "操作",  align: "center",formatter:function (value,row,index) {
                        let config = `<a class="easyui-linkbutton" data-param='${JSON.stringify(row)}' onclick="configOperator(this)">配置</a>`;             return config;           }}         ]],         onLoadSuccess:function(json){ },         onLoadError : function (rowData, rowIndex) {           $.messager.alert('提示','加载数据出现时发生错误,请稍候重试...');         },         pagination: true,         loadMsg:"正在加载,请稍后........",   });
// 配置方法
function configOperator(obj) {   let param = $(obj).attr('data-param');   let params = JSON.parse(param)   console.log(params); }

这样是不是更安全的实现了参数的传递过程。能想到在其他很多场景也能用到

好了以上就是分享的全部内容了,感谢观看,喜欢就关注我吧!

(0)

相关推荐

  • ecshop的smarty基础普及知识

    ecshop板制造比拟中心的其实就是变量的运用,由于这些就是数据的底子,想从数据库里获取数据并显现在界面就有必要运用smarty来展现,下面是关于smarty的分析和运用. Smarty是一个php模 ...

  • JS的7种数据类型以及它们的底层数据结构

    年纪大了记性不好(其实是脑子不好使,但又不想承认),有些东西总是容易忘,所以为了便于之后查看干脆记下来,用自己的语言再把一些概念整理一下,都是自己写的,以后再看这些文字也会有亲切感(好像很有道理的亚子 ...

  • js/jQuery获取data-*属性值【转】

    下面就详细介绍四种方法获取data-*属性的值 <li id="getId" data-id="122" data-vice-id="11&qu ...

  • WEB前端第六十课——原生Ajax与HTTP协议

    WEB前端第六十课——原生Ajax与HTTP协议

  • JavaScript之浅谈深拷贝与浅拷贝

    这一章我们聊一下js中深拷贝与浅拷贝 深拷贝和浅拷贝的区别? 1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用 2.深拷贝: 创建一个新的对象和数组,将原对 ...

  • jQuery从入门到放弃

    概念 jQuery 是一个高效.精简并且功能丰富的 JavaScript 工具库.它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作.事件处理.动画和 Ajax 操作更加简 ...

  • java开发之常用的Javascript对象方法整理分享

    Javascript 对象方法是包含内置函数定义的属性,用于有效地处理单个对象并从中获取信息. 语法:ObjectName.methodName() 在本文中,我们将讨论 Javascript 中 7 ...

  • JavaScript 开发必须掌握技能(一)- 条件语句的5条守则

    申明:本文转载至:https://github.com/dawn-plex/translate/blob/master/articles/5-Tips-to-Write-Better-Conditio ...

  • 提问技能四:让语文课的提问更“精彩”

    古人曰:学起于思,思起于疑.提问是一种艺术,是检验学生对文本解读程度的重要手段,也是提高教学质量的重要方式.语文教学归根到底是老师与文本的对话,学生与文本的对话,老师与学生的对话.教师有效的提问能激发 ...

  • 结课技能四:语文教学结尾艺术

    一堂好课,人们常用"风平浪静-风起云涌-风急浪高-波涛汹涌-狂风暴雨"来形容.评价其好.的确,语文课要想成功,一个引人入胜的开头,中间环环相扣.妙趣横生非常重要,但课的结尾能做到精 ...

  • 解读技能四:文本解读要尊重作者和教材编者的价值取向

    陈先云 语文教师备课要做的一项重要工作就是解读文本.这涉及到如何尊重文本作者和教材编者的价值取向,如何把握文本的语言特色,教学目标如何定位,教学内容如何选择.组织与重构等等一系列的问题,这是一项基础性 ...

  • 反思技能四:教学反思的内涵、意义和方法

    教学反思作为在校本教研中推动提高教师教育教学理念和自身的教育教学水平的一项重点内容在全校开展,部分教师的教学反思不但详尽而且深刻,但大部分教师对教学反思的理解以及看法还存在一定差距.那么,如何做好&q ...

  • 有技能没学历和有学历没技能哪个更难?

    "十四五"规划纲要明确提到要稳步发展职业本科教育,推动职普融通,决"有技能没学历这个痛点". 也就是说往后职业教育不再只是局限于中专.大专学历,将与本科教育相互 ...

  • 俗语“一更人、二更火、三更鬼、四更贼、五更鸡”,老祖宗为何这么说

    俗语:"一更人.二更火.三更鬼.四更贼.五更鸡",老祖宗为何这么说? 杨万里?<不寐>: "深山五鼓鸡吹角,落月一窗鹅打更." 打更是一种非常古老的 ...

  • 设计作业技能四:精减作业时间凸显能力含量

    在我们语文老师的脑海里或许经常会出现这样的一幕-- 一位老师站在讲台上,铿锵有力地说:"明天开始是双休日了,语文作业是抄写词语盘点3遍,完成学习指导丛书第10课,周记1篇,看课外书两小时.& ...

  • 备课技能四:让备课成为一种幸福

    备课,是每位教师必做的功课.在教学前要将教学内容了然于胸.而有效备课要求教师在备课时要思考自己的教学设计如何促进学生主动发展,提供学生发展的机会:注重体现师生多向互动,不再依赖教参并进行大胆的突破.探 ...