关于jquery 的on 方法

ILOVE_ASPNET 2013-05-31 04:50:33
以前一直是用 低版本的jq 库 1.7 1.8左右的, 然后绑定事件都是用的 静态的用bind绑定,动态的用live 绑定的, 现开发新的项目打算用1.9 版的库 听说1.9 的on 已合并了 bind ,live,delegate 但是奇怪的是 我做了个测试还是没办法实现 live的效果啊, 动态生成的元素还是没办法成功绑定事件,
这是什么情况 ?

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="Scripts/jquery-1.9.1.min.js"></script>
</head>
<body>

<table>
<tr>
<td>
<p id="pclick">点我给页面添加一个按钮</p>
</td>
</tr>
</table>
<script>

$(function () {
$("#pclick").on("click", function () {
$("<input type='button' value='test' id='btnTest' />").insertAfter($(this));
});

$("#btnTest").on("click", function () {
alert("进来了");
});
})
</script>
</body>
</html>

...全文
199 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ILOVE_ASPNET 2013-06-01
  • 打赏
  • 举报
回复
引用 13 楼 jslang 的回复:
http://www.css88.com/jqapi-1.9/old.html#p=on
确实是自己懒了点没仔细去看API,惭愧啊。
天际的海浪 2013-05-31
  • 打赏
  • 举报
回复
http://www.css88.com/jqapi-1.9/old.html#p=on
ILOVE_ASPNET 2013-05-31
  • 打赏
  • 举报
回复
引用 9 楼 xiaofanku 的回复:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
 
    <table>
        <tr>
            <td>
                <p id="pclick">点我给页面添加一个按钮</p>
            </td>
        </tr>
    </table>
    <script>
 
        $(function () {
            $("#pclick").on("click", function () {
                var newE=$("<input type='button' value='test' id='btnTest' />").bind('click',function () {
                	alert("进来了");
            	});
				newE.insertAfter($(this));
            });
        })
    </script>
</body>
</html>
高手啊, 学习了。
ILOVE_ASPNET 2013-05-31
  • 打赏
  • 举报
回复
引用 8 楼 xiaofanku 的回复:
你不知道javascript是支持锁链书写的吗?你有意往不正常运行的方式写怪的了jQuery吗
没 不是怪jquery 哦,只是自己不理解on 这个方法 ,对JS也不很熟悉, 有些小疑问,问问,讨论下了。
街头小贩 2013-05-31
  • 打赏
  • 举报
回复
或者:

				$("<input type='button' value='test' id='btnTest' />").bind('click',function () {
                	alert("进来了");
            	}).insertAfter($(this));
街头小贩 2013-05-31
  • 打赏
  • 举报
回复

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
 
    <table>
        <tr>
            <td>
                <p id="pclick">点我给页面添加一个按钮</p>
            </td>
        </tr>
    </table>
    <script>
 
        $(function () {
            $("#pclick").on("click", function () {
                var newE=$("<input type='button' value='test' id='btnTest' />").bind('click',function () {
                	alert("进来了");
            	});
				newE.insertAfter($(this));
            });
        })
    </script>
</body>
</html>
街头小贩 2013-05-31
  • 打赏
  • 举报
回复
你不知道javascript是支持锁链书写的吗?你有意往不正常运行的方式写怪的了jQuery吗
ILOVE_ASPNET 2013-05-31
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
$(document).on("click", "#btnTest", function () { alert("进来了"); });
有点好奇做了如下的测试 ,发现 $(document) 这个选择器只能是他的父级,不能是其它的选择器类型

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="Scripts/jquery-1.9.1.min.js"></script>
</head>
<body>

    <table>
        <tr>
            <td>
                <p id="pclick">点我给页面添加一个按钮</p>
            </td>
        </tr>
    </table>

    <div>
        <input type="button" name="btnTest" value="我一直都在" />
    </div>
    <script>

        $(function () {
            $("#pclick").on("click", function () {
                $("<input type='button' value='test' name='btnTest' />").insertAfter($(this));
            });

            $("td").on("click", "input[name='btnTest']", function () {
                alert("进来了td");
            });
            $("div").on("click", "input[name='btnTest']", function () {
                alert("进来了div");
            });
            $("button").on("click", "input[name='btnTest']", function () {
                alert("进不来");
            });
        })
    </script>
</body>
</html>

ILOVE_ASPNET 2013-05-31
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
$(document).on("click", "#btnTest", function () { alert("进来了"); });
亲, 为什么一定是这样的写法了? 难道只有这种格式的话 才会像以前的live方式? 如果写成这样 $("#btnTest").on("click", function () { alert("进来了"); }); 他就会走bind方式?
ILOVE_ASPNET 2013-05-31
  • 打赏
  • 举报
回复
引用 3 楼 xiaofanku 的回复:
这种写法有意思吗?
怎么没意思? 很有意思的, 因为传统的live 性能比较差,1.9版本做这些整合就是为了避免bind不支持动态数据的事件绑定,也解决了live 性能的问题
天际的海浪 2013-05-31
  • 打赏
  • 举报
回复
$(document).on("click", "#btnTest", function () { alert("进来了"); });
街头小贩 2013-05-31
  • 打赏
  • 举报
回复
这种写法有意思吗?
ILOVE_ASPNET 2013-05-31
  • 打赏
  • 举报
回复
SF 自己座。
jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签 1.3.6更新 Bug treegrid: getChecked方法不能返回正确的行. fixed. tree: 异步树,在onlyLeafCheck:true时复选框不显示正确. fixed. Improvement treegrid:继承datagrid组件所有的selecting和checking方法。 linkbutton:图标对齐方式,支持值:'top','bottom','left','right'。 linkbutton:添加"size"属性,支持值:'small','large'。 linkbutton:添加的onClick事件。 menubutton:添加"menuAlign"属性,允许用户设置顶级菜单对齐。 combo:添加"panelAlign"属性,支持值:'left','right'。 calendar:"formatter"、"styler"和"validator"选项可用于自定义日历日期。 calendar:添加的onChange事件。 panel:添加"method","queryParams"和"loader"属性。 panel:添加"onLoadError"事件。 datagrid:添加"onBeginEdit"事件。 datagrid:添加"onEndEdit"事件。 datagrid:添加"sort"方法和"onBeforeSortColumn"事件。 datagrid:"combogrid"编辑器集成到datagrid。 datagrid:添加"ctrlSelect"属性,允许使用ctrl+click 多选 slider:添加"converter"选项,允许用户决定如何将一个值转换为滑块的位置或滑块位置值。 searchbox:添加"disabled"属性。 searchbox:添加"disabled","enable","clear","reset"方法。 spinner:添加"readonly"属性、"readonly"方法和"onChange事件。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧