jquery中html、text、val回调函数

先扫盲:

  摘自菜鸟教程:jQuery 方法:text()、html() 以及 val()拥有回调函数。

回调函数有两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串

再上代码:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <ul>
        <li>demo</li>
        <li>demo</li>
        <li>demo</li>
        <li>demo</li>
    </ul>
</body>
<script src="jquery-1.12.4.min.js"></script>
<script>
    $("li").click(function () {
        $(this).html(function(i,originTex){
            return (originTex+i);
        })
    })
</script>
</html>

很奇怪,当点击元素"li"时总是在旧文本后追加下标0,与预期不一样。

再看接下来代码:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <ul>
        <li>demo</li>
        <li>demo</li>
        <li>demo</li>
        <li>demo</li>
    </ul>
</body>
<script src="jquery-1.12.4.min.js"></script>
<script>
//    $("li").click(function () {
//        $(this).html(function(i,originTex){
//            return (originTex+i);
//        })
//    })
    $(document).click(function(){
        $("li").html(function(i,originTxt){
            $(this).html(originTxt+i);
        })
    })
</script>
</html>

改变事件源,期待的结果出现了。

【代码解析】

第一种情况触发事件的是当前触发点击事件的li元素,$(this)指向它,只有一个元素,所以其下标一直是0;

第二种情况仅仅是通过document这个对象触发事件,进而执行的是一个典型的遍历赋值动作,这个不多做解释。

时间: 2024-10-10 11:02:02

jquery中html、text、val回调函数的相关文章

论jQuery中animate方法的回调问题

今日在使用jQuery中animate方法的回调函数时,发现当回调函数内嵌animate方法时,并且将这些放在循环中时会出现:先是外部animate被执行,然后再是内部animate被执行.经过多次试验以及网上查询,发现js引擎单线程的,异步事件只能排队等候执行,而不能同时执行.而animate方法是采用计时器和延时器进行闭包而成的方法,相应的计时器和延时器是异步的,故animate方法也是异步执行的.这样就可以解释了:

JS中innerHTML、outerHTML、innerText 、outerText、value的区别与联系? jQuery中的text()、html()和val()

一.JS中innerHTML.outerHTML.innerText .outerText.value的区别与联系?jS中设置或者获取所选内容的值:①innerHTML :属性设置或返回该标签内的HTML.也就是从对象的起始位置到终止位置的全部内容,包括Html标签.②outerHTML:属性设置或返回该标签及标签内的HTML.也就是从对象的该标签起始到终止位置的全部内容,包括Html标签.如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后,再用正则表达式去

JS中innerHTML、outerHTML、innerText 、outerText、value的区别与联系?jQuery中的text()、html()和val() ?

作者赵晓盼课程任务一:零基础JavaScript编码(一)2809次浏览70赞2017-03-02 10:49 一.JS中innerHTML.outerHTML.innerText .outerText.value的区别与联系?jS中设置或者获取所选内容的值:①innerHTML :属性设置或返回该标签内的HTML.也就是从对象的起始位置到终止位置的全部内容,包括Html标签.②outerHTML:属性设置或返回该标签及标签内的HTML.也就是从对象的该标签起始到终止位置的全部内容,包括Html

jQuery中的text(),html(),val()用法

jQuery中的text(),html(),val()用法 text():获取或者改变指定元素的文本 html():获取或改变指定元素的html元素以及文本 val():获取或者改变指定元素的value值(一般是表单元素) 以上3个都是jquery类库中的语法 作用都是获得当前对象的value值(一般是表单元素) 只是,this.value是js的原生语法,$(this).val()是jquery的语法 使用this.value无需引入任何库文件,而$(this).val()则需要引入jquer

jquery中的 .html(),.val().text()

.html(),.text(),.val(),.html()用为读取和修改元素的HTML标签,包括标签内的内容.text()用来读取或修改元素的纯文本内容,去除 html 标签.val()用来读取或修改表单元素的value值as:<div id="demo"><p>hi</p></div><input type="text" name="txt" id="txt" valu

jquery的html,text,val

.html()用为读取和修改元素的HTML标签 .text()用来读取或修改元素的纯文本内容 .val()用来读取或修改表单元素的value值. 这三个方法功能上的对比 .html(),.text(),.val() 三种方法都是用来读取选定元素的内容:只不过.html()是用来读取元素的HTML内容(包括其Html标签),.text()用来读取元素的纯文本内 容,包括其后代元素,.val()是用来读取表单元素的"value"值.其中.和.text()方法不能使用在表单元素上,而.val

不能调用jquery中ready里面定义的函数?

现象:不能调用jquery中ready里面定义的函数 源码:<script type="text/javascript"> $(document).ready(function(e) { function test(){ alert('test!'); } }); test(); // 报错,test()未定义 </script> 解析:ready也相当于一个函数,即新建一局部函数作用域,外面 当然不可用.和js的onload函数差不多,就比如 function

jQuery中提供的三个函数:map,each,trim

jQuery中提供的三个函数: map,each,trim $.map(arry,callback(element,index)); 对于数组array中的每个元素,调用callback()函数,最终返回一个新的数组.原数组不变. 源码 // arg is for internal usage only map: function( elems, callback, arg ) { var length, value, i = 0, ret = []; // Go through the arr

jquery序列化表单以及回调函数的使用

在开发项目中,将前台的值传给后台,有时的JSP表单中的值有一两个,也有全部的值,如果这时一个个传,必定不是很好的办法,所以使用jQuery提供的表单序列化方法,可以很好的解决这个问题,同时可以封装成通用的函数,执行成功可以调用各自的回调函数,实现各自的功能. 代码如下: function queryUserInfo(actionUrl,formId,fun){ var params=new Object(); //声明数组 $.each($("#"+formId).serializeA

iOS中什么是BLOCK回调函数

1.回调函数类似通知.委托 2.回调函数声明.实现.回调可以在都一个类中,也可以把回调写到别的类中 3.在A类中声明函数,在实现函数中,达到满足的条件,回调,在B类中的回调函数会被调用,并去处理满足条件的事情 比如下载,如果下载完成,就触发回调函数,通知B类中的回调函数,传递一个下载完成的参数,B类的回调函数会根据参数       执行相应的代码,如果成功怎么样怎么样,如果失败怎么样怎么样,B类在A类下载过程中完全可以做他自己的事情. 4.例子(伪代码): A类a.h中声明 -(void)dow