jquery实现鼠标右键弹窗删除/重命名等操作实例

在一些管理后台,我们会模拟windows系统鼠标右键的操作实现删除和重全名等,本文我们来告诉你用jquery如何实现。

1.因为window默认是可以右键的,所以我们要先禁用window原生的右键弹窗(禁用包括2个区域,1是鼠标右键的区域div 2是弹出窗口的div):

//禁用区域右键
$('body').on('contextmenu','.bottompage',function(){
    return false;
});
$('body').on('contextmenu','#notebookedit',function(){
    return false;
});
    
2.jq右键点击事件的方法。

需要注意的是(1,弹窗多次点击会有偏移,所有每次弹出需要位置置为0     2,如果页面存在滚动条的话,需要将滚动条计算进去  3,获取滚动条偏移量不一定使用body对象,使用滚动条所在的div作为对象)

//点击需要重命名的div
$('body').on('mousedown','.noteitemstyle',function(event){
    //右键事件event.button==2
    if(event.button==2)
    {
        var offset=$(this).offset();
        //放置点击别处时的弹窗不消失造成误差
        $('.noteeditlist').css('display','none');
        
        //将弹窗的div绝对定位置清零,否则多次点击会产生偏移量
        $('.noteeditlist').css('position','absolute');
        $(".noteeditlist").css("left","0px");
        $(".noteeditlist").css("top","0px");
        
        //获取当前页面所在div的滚动条的高度,本页面只有垂直滚动条
        var locationY = $('.wrap').scrollTop();
        
        offset.top=parseInt(offset.top)+parseInt(locationY);
        
        //展示弹窗div ,并根据点击源对其属性赋值
        $('.noteeditlist').offset(offset);            
        $('.noteeditlist').css('display','block');                            
        var id=$(this).attr('noteid');
        $('.noteeditlist').attr('renameid',id);
        
    }
});

3 弹窗弹出之后,我们继续操作自动隐藏弹窗的方法

//点击页面其他部分弹窗隐藏
$(document).bind('click',function(e){
    var e = e || window.event; //浏览器兼容性
    var elem = e.target || e.srcElement;
    while (elem) { //循环判断至跟节点,防止点击的是div子元素
        if ((elem.id && elem.id=='notebookedit')||(elem.className && elem.className=='notebooklistview')){
        return;
        }
        elem = elem.parentNode;
        }
        $('#notebookedit').css('display','none'); //点击的不是div或其子元素        
    });

4 字段重命名功能实现思路是

       1)右键弹窗 ,弹窗中有重命名子项的选项,
       2)点击之后, 最初右键的div变为可编辑的状态,
       3)点击是会将最初右键的主题id赋值给弹窗的一个属性
       4)编辑之后点击页面任何其他地方即代表重命名完成,发送ajax请求进行重命名

代码如下:

$(document).bind('click',function(e){
    var e = e || window.event; //浏览器兼容性
    var elem = e.target || e.srcElement;
    while (elem) { //循环判断至跟节点,防止点击的是div子元素
        if ((elem.className && elem.className=='notebookrenameedit')||(elem.id && elem.id=='notebookrename')){
        return;
        }
        elem = elem.parentNode;
    }
    var renameid=$('#notebookrename').attr('renameid');
    //判断是否进行了重命名的编辑操作:点击弹窗重命名时会对renameid赋值
    if(renameid!='-1')
    {                     
      var renameval=$("#"+renameid+" .notebookrenameedit :input[name='rename']").val();
    
      //点击的不是div或其子元素    
      $.post('index.php?r=coursespace/coursespace/notelistreload', {
            renameid: renameid, renameval: renameval
        },
        function(data, status) {
            if (status = 'success') {
                $('.bottompage').html(data);
                //赋值标记为未点击重命名的状态
                $('#notebookrename').attr('renameid', '-1');
                $('.notebookrenameedit').css('display', 'none');
                CKEDITOR.replace("cke3",{toolbar:[
                                                  //加粗 斜体,划线  穿过线  下标字  上标字
                                                  ['Bold','Italic','Underline','Strike','Subscript','Superscript'],
                                                  //数字列表   实体列表   减小缩进    增大缩进
                                                  ['NumberedList','BulletedList','-','Outdent','Indent'],
                                                  //左对齐   居中对齐   右对齐    两端对齐
                                                  ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
                                                  ['Styles','Format','Font','FontSize'],],width:450});
            } else {
                alert("加载失败!")
            }
        });    
    }
});

5 重命名的实现原理就是将展示的div替换成可以编辑的input,示例:

  <div class='notebookname'><?= $Rpnotebook->title ?></div>      
  <div class='notebookrenameedit' style='display:none;'>
  <input type='text' name='rename' value=<?= $Rpnotebook->title ?> style='width:120px;' class='notebookrenameeditid'>
  </div>

6 弹窗的div

<div id='notebookedit' class="notebookdelete" style="display:none; " editid="-1" >
 <div class='notebookedititem' id='notebookitemdelete'>删除</div>
 <div class='notebookedititem' id='notebookrename' renameid='-1'>重命名</div>
</div>

最后我们的效果图如下:

这样我们就成功的实现了用jquery操作后台右键数据重命名的功能,感兴趣的朋友可以参考一下。

时间: 2024-09-17 16:55:54

jquery实现鼠标右键弹窗删除/重命名等操作实例的相关文章

nodejs 文件与文件操作(读写文件 删除 重命名)

读写文件nodejs中操作相对就简单很多!来看看几个例子吧. [写文本文件] // wfile.js ------------------------------  代码如下 复制代码 var fs = require("fs");   var data = 'hello 雨林博客'; fs.writeFile('c:a.txt', data, 'ascii', function(err){  if(err){  console.log('写入文件失败');  }else{  cons

fckeditor上传文件按日期存放及重命名方法_php实例

1. 实现 fckeditor 按日期分目录的形式存放上传的文件,比如今天是 2015年5月5日,那么今天上传的文件都放在这个目录里面去,明天上传的则自动创建并放在类似 2015-05-06 这样的目录里面去. (1)找到 editor\editor\filemanager\connectors\php\ 文件夹下的 config.php 文件 (2)找到如下配置变量 查看代码打印 复制代码 代码如下: $Config['UserFilesPath'] = '/uploadfiles/'; 将其

jquery处理页面弹出层查询数据等待操作实例_jquery

本文实例讲述了jquery处理页面弹出层查询数据等待操作.分享给大家供大家参考.具体实现方法如下: $(document).ready(function(){ layer.load(0); //初始化加载 //可选范围(0-9)0表示等返回结果后关闭,1-9表示自动关闭时间(s) }); 当查询结果集返回后,设置关闭等待的样式 function init_page_pro(sdate, pro) { $.post("detail.key", { 'pro' : pro, 'sdate'

php 数组删除 移动 取值 操作实例。

*/ $input=array("a","b","c","d","e");      //定义原始数组 $output=array_slice($input,2);      //返回"c","d",和"e" $output=array_slice($input,-2,1);     //返回"d" $output=array_

Mac文件如何重命名

  Mac系统下的文件如何重命名?我们在使用PC的时候,对文件重命名的时候都会习惯的使用鼠标右键,选择重命名选项来对文件进行重命名,可是苹果电脑这样是行不通的,今天PC6小编就为大家介绍两种Mac OS 系统下给文件重命名的操作方式: 1.Return键 首先我们要选中一个你需要重命名的文件夹.选中之后我们按下return键,也就是我们熟知的回车键,我们会发现这时候就可以更改文件的名字了,我们修改完成之后,确认就可以完成文件夹的重命名工作了. 2.鼠标左键 就是用鼠标点击一下文件,就是选中文件,

如何重命名文件

  1.选择"重命名" 用鼠标右键单击要重命名的"bkill"文件,选择右键菜单中的"重命名". 重命名文件 2 激活"改写状态" 这时"bkill.txt"反白显示,呈改写状态. 改写状态 3 重命名 将"bkill.txt"改为"第2章.txt"后按Enter键即可. 另外要使重命名的文件或文件夹的名称呈改写状态还可以通过慢双击的方法.这里所谓的慢双击是指比平常双

Mac文件怎么重命名

  对于很多刚刚使用Mac的用户来说,一些基本操作还不是很了解.就比如不少人在问,Mac文件怎么重命名?我们在使用PC的时候,对文件重命名的时候都会习惯的使用鼠标右键,选择重命名选项来对文件进行重命名,可是苹果电脑这样是行不通的,今天小编就为大家介绍两种Mac OS 系统下给文件重命名的操作方式: 1.Return键 首先我们要选中一个你需要重命名的文件夹.选中之后我们按下return键,也就是我们熟知的回车键,我们会发现这时候就可以更改文件的名字了,我们修改完成之后,确认就可以完成文件夹的重命

jquery实现人性化的有选择性禁用鼠标右键_jquery

使用比较暴力的手段禁用鼠标右键是不人性化的,所以最好还是有选择性的禁用鼠标右键. 代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.45it.com/" /> <title></title> <style t

Java创建、重命名、删除文件和文件夹(转)

Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方案,借助Apache Commons IO工具包(commons-io-1.1.jar)来简单实现文件(夹)的复制.移动.删除.获取大小等操作.   import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefi