如何删除元素的事件处理程序并将其设置回来?

时间:2014-01-23 07:58:12

标签: javascript jquery

我正在学习JQuery并面临一些问题。

<html>
    <head>
        <link rel="stylesheet" href="css/puzzle.css" type="text/css" />
        <script src="scripts/jquery.js" type="text/javascript"></script>
        <script src="scripts/test.js" type="text/javascript"></script>
    </head>
    <body>
        <div id="parent">
            <a href="#" class="link1">link1</a>
            <a href="#" class="link2">link2</a>
            <a href="#" class="link3">link3</a>
        </div>
    <body>
</html>

$(
    function() {        
        $("#parent").on("click", "a", function() {
            linkClick(this);
        });

        function linkClick(link) {            
            $("#parent a").first().off("click");
            console.log(link);
        }
    }
)
问题1:当用户点击其中一个链接时,我可以删除该链接的事件管理器吗?

问题2:如果问题1已被底层化,我可以将onclick事件处理程序添加回“指定的链接”而不影响其他链接吗?

感谢您的阅读。

==

我尝试使用 $(“#parent a”)。first()。off(“click”); 取消绑定第一个链接的事件处理程序。 但无论我点击第一个链接多少次,该控制台仍会打印数据。

如何删除链接的事件处理程序,然后在几秒钟内将其添加回来

2 个答案:

答案 0 :(得分:0)

使用off

删除活动:

$( "#parent a").first().off( "click" );

添加活动:

$( "#parent a").first().on( "click", function(){
   //click event code
 })

答案 1 :(得分:0)

使用:

 //Remove click event for first element

 $( "#parent a").first().off("click");

 //Bind new event to element:

 $( "#parent a").first().bind('click',function(){
  //click event code
 })