分类 前端 下的文章

在ajax发送成功后,无法使用jquery on对新添加的DOM进行绑定【解决】

今天 帮一个版块的详细信息,遇到这个问题了。发现选择器正确,事件也都正确,但是没有触发点击事件的效果。
了解这些绑定的区别就解决了。


bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数

$("a").bind("click",function(){alert("ok");});

live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的

$("a").live("click",function(){alert("ok");});

delegate(selector,[type],[data],fn) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数

$("#container").delegate("a","click",function(){alert("ok");})

on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数

差别:

.bind()是直接绑定在元素上

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制

angular1控制器主要作用(大致思路)

初始化module数据(为应用中的模型设置初始状态)
用过$scope对象把数据模型或函数行为暴露给视图
监视模型的变化,做出相应动作

 <!DOCTYPE html>
<html lang="en" ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<table ng-controller="muController">
    <tr>
        <td>用户名:</td>
        <td><input type="text" ng-model="user.username"/></td>
    </tr>
    <tr>
        <td>密码:</td>
        <td><input type="password" ng-model="user.password"/></td>
    </tr>
    <tr>
        <td><input type="button" value="登陆" ng-click="login()"/></td>
    </tr>
</table>
<script src="node_modules/angular/angular.js"></script>
<script>
    var app = angular.module("myApp", []);
    app.controller("muController", ["$scope", function ($scope) {
        $scope.user = {
            username: '',
            password: ''
        }
        $scope.login = function () {
            console.log($scope.user);
        }
    }])
</script>
</body>
</html>

仿腾讯首页星座运势(完)

上 http://www.qq.com/ 扒素材。
主要涉及: position “子绝父相” , onchange(select option)

function $(id){return document.getElementById(id);}

code: https://github.com/net-web/javasript-base

CSS:

仿腾讯首页星座运势
最终效果:
仿腾讯首页星座运势

Tap栏切换、选项卡切换特效(js)

使用“排他思想”。。。。。。
代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        #main {
            width: 600px;
            margin: 0 auto;
        }
        #btn {
            height: 50px;
        }
        #btn button {
            float: left;
        }
        #divBox div {
            width: 500px;
            height: 500px;
            margin-top: 50px;
            display: none;
        }
        .boxBgc {
            background-color: purple;
        }
    </style>
</head>
<body>
<div id="main">
    <div id="btn">
     <button class="boxBgc">第一个盒子</button>
     <button>第二个盒子</button>
     <button>第三个盒子</button>
     <button>第四个盒子</button>
     <button>第五个盒子</button>
    </div>
    <div id="divBox">
        <div style="display: block">第一个盒子</div>
        <div>第二个盒子</div>
        <div>第三个盒子</div>
        <div>第四个盒子</div>
        <div>第五个盒子</div>
    </div>
</div>
<script>
    window.onload = function () {
        //获取所有的button
        var btnBox = document.getElementById("btn").getElementsByTagName("button");
        //获取所有div
        var divBox = document.getElementById("divBox").getElementsByTagName("div");
        var btnLength = btnBox.length;
        var divLength = divBox.length;
        for (var i = 0; i < btnLength; i++) {
            btnBox[i].index = i;
            btnBox[i].onmouseover = function () {
                //清除所有button上的背景颜色
                for (var j = 0; j < btnLength; j++) {
                    //btnBox[i].style.backgroundColor = "";
                    btnBox[j].className = "";
                    divBox[j].style.display = "none";
                }
                this.className = "boxBgc";
                //影藏所有的div
                //for(var i =0;i<divLength;i++){
                //}
                divBox[this.index].style.display = "block";
            }

        }

    }
</script>
</body>
</html>

js选项卡特效