如何移除锚点的onclick事件?

13 浏览
0 Comments

如何移除锚点的onclick事件?

我想要移除onclick属性,但是我使用了jQuery,onclick事件并没有被移除。以下是我的代码:

 function getBusinesses(page){
                if(page==0){
                    alert("你已经在第一页了");
                    $("#previous a").removeAttr("onclick");
                }
                else{
                    $.ajax
                    ({
                        type: "POST",
                        url: "getbusiness.php",
                        data: "page="+page,
                        success: function(msg)
                        {
                            $("#new2").html(msg);
                        }
                    });
                }
            }
<

0
0 Comments

如何移除锚点的onclick事件?

问题原因:在代码中使用了<a>标签内的onclick属性。这种方式不仅代码混乱,还可以使用jQuery来绑定/解绑DOM元素的点击处理程序。

解决方法:

1. 使用jQuery绑定点击处理程序:

$("#previous a").click(function(e){
     // 阻止默认行为,防止锚点重定向到href
     e.preventDefault
     // 触发函数。假设你有一个pagesLeft计数器,将递减
     getBusinesses(pagesLeft)
})

2. 修改JS函数,在pagesLeft达到0时解绑处理程序:

var pagesLeft = 3 // 从某个地方获取
function  getBusinesses(page){
    if(page==0){
         alert("you are already on First Page");
         // 在这里使用jQuery的.unbind('click')
         $("#previous a").unbind('click');
    }
    else{
        pagesLeft--       
        $.ajax({
            type: "POST",
            url: "getbusiness.php",
            data: "page="+page,
            success: function(msg)
            {
                 $("#new2").html(msg);
             }
        });
    }
}

3. 如果想保留原始代码,可以按照以下方式修改:

<div id="new34"  style=" width:1028px; height:15px; background#fff; float:left;">
    <div id="previous" style="float:left; width:20px;">
        <a href="#">&lt;</a><!-- 这里没有onclick和href="#" -->
    </div>
</div>

var pagesLeft = 3 // 从某个地方获取
function  getBusinesses(page){
    if(page==0){
         alert("you are already on First Page");
         // 在这里使用jQuery的.unbind('click')
         $("#previous a").unbind('click');
    }
    else{
        pagesLeft--       
        $.ajax({
            type: "POST",
            url: "getbusiness.php",
            data: "page="+page,
            success: function(msg)
            {
                 $("#new2").html(msg);
             }
        });
    }
}

4. 最后的修改方式如下,但是代码中存在一些主要问题:

<div id="new34" style=" width:1028px; height:15px; background#fff; float:left;">
    <div id="previous" style="float:left; width:20px;">
       <!-- 如何设置getBusinesses(1)作为参数? -->
       <a onclick="getBusinesses(1)" href="javascript:void(0)">aaa</a></div>
<script> 
    function  getBusinesses(page){
         if(page==0){
             alert("you are already on First Page");
             $("#previous a").removeAttr("onclick");
         }
         else{
              // 在这里应该递减getBusinesses的参数
              // 但是如何做到呢?
              $("#previous a").attr("onclick","getBusinesses(0)");
              $.ajax
              ({
                  type: "POST",
                  url: "getbusiness.php",
                  data: "page="+page,
                  success: function(msg)
                  {
                      $("#new2").html(msg);  
                  }
              });
          }
      }
 </script>

完整的修改可以在以下链接中查看:这里是完整的修改代码

0
0 Comments

如何移除锚点的点击事件?

问题的原因是,需要停止一个点击事件的执行。解决方法如下:

$('#yourElement').off('click');

以上代码会移除锚点的点击事件。

希望以上内容对您有所帮助。

0
0 Comments

问题的原因是代码中的if语句判断条件不正确,导致onclick事件无法被移除。解决方法是将if语句的判断条件修改为if(page<=1),这样就可以正确移除onclick事件。具体代码如下:

if(page<=1){
    $("#previous a").removeAttr("onclick");
}

通过执行getBusinesses(1),你的$("#previous a").removeAttr("onclick");代码将无法起作用,因为它被包裹在if(page==0){}中。将if条件修改为if(page<=1),它将按预期工作。

0