代码之家  ›  专栏  ›  技术社区  ›  user2828442

克隆所选的父div事件.目标

  •  0
  • user2828442  · 技术社区  · 7 年前

    当我右键单击link时,我想获取它的父div的所有代码,它应该被克隆到这个div之后。

    我尝试了一些代码,但它不工作,请参阅我的代码下面。我还想删除所选的父级 div .

    // when we're about to show the context menu, show our own instead
    $(document).on("contextmenu", function(event) {
      // Avoid the real one if this is the link
      if ($(event.target).hasClass("sim-row-edit")) {
    	  console.log("right click identified");
    	 
    	 // add border
    	 $(event.target).parent().addClass("selected");
    	 
        event.preventDefault();
    	clicked_link = $(event.target).text();
    	clicked_url = $(event.target).attr("href");
    	clicked_id = $(event.target).attr("id");
    	
    	//$(event.target).text("ttt");
    	
    	//alert(clicked_link);
        // Show contextmenu
        $(".custom-menu").show(100).
        css({
          top: event.pageY + "px",
          left: event.pageX + "px"
        });
      }
    });
    
    // hide our context menu when the document is clicked
    $(document).on("mouseup", function() {
      $(".custom-menu").hide(100);
      $(".selected").removeClass("selected");
    
    });
    
    $(".custom-menu li").click(function() {
      //alert("hii2");
      // This is the triggered action name
      switch ($(this).attr("data-action")) {
        // A case for each action. Should personalize to your actions
        case "first":
         // console.log("first");
    	   console.log("-----");
    	   console.log(clicked_link);
    	   console.log(clicked_url);
    	   console.log(clicked_id);
    	   
    	   
    	   //trying to clone the div using below code but it is not working.
    	   thisDiv = $(event.target).parent();
    	   $(thisDiv).clone().insertAfter(thisDiv);
    	
    	  //console.log($(this).parent().text());
          break;
        case "second":
          console.log("second");
          break;
        case "third":
          console.log("third");
          break;
      }
    });
    .custom-menu {
      display: none;
      z-index: 1000;
      position: absolute;
      background-color: #fff;
      border: 1px solid #ddd;
      overflow: hidden;
      width: 120px;
      white-space: nowrap;
      font-family: sans-serif;
      -webkit-box-shadow: 2px 2px 7px 0px rgba(50, 50, 50, 0.5);
      -moz-box-shadow: 2px 2px 7px 0px rgba(50, 50, 50, 0.5);
      box-shadow: 2px 2px 7px 0px rgba(50, 50, 50, 0.5);
    }
    
    .custom-menu li {
      padding: 5px 10px;
    }
    
    .custom-menu li:hover {
      background-color: #4679BD;
      cursor: pointer;
    }
    
    .selected {
      border: 1px solid red;
    }
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
    	<link href="style.css" rel="stylesheet" type="text/css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    
        <title>title</title>
      </head>
      <body>
      
      <div>
      Lorem..
      <a href="http://goo.com" id="id-goo" class="sim-row-edit" data-type="link">right click on me and click clone, but its not working</a>
      </div>
       
       
       <div class="sim-row-edit">
       <a href="http://voo.com" id="id-voo"  data-type="link">voo</a>
       </div>
       
    <ul class='custom-menu'>
      <li data-action = "first">Clone</li>
      <li data-action = "second">Second thing</li>
      <li data-action = "third">Third thing</li>
    </ul>
    
    <script type="text/javascript" src="script.js"></script>
      </body>
    </html>
    1 回复  |  直到 5 年前
        1
  •  1
  •   Ritesh Jagga    7 年前

    在代码示例中,在事件处理程序中 $(".custom-menu li").click= function() { ... } event.target li 元素并获取其 parent ul 被克隆并插入其中的元素 给出嵌套列表,即上下文菜单中的上下文菜单。

    // when we're about to show the context menu, show our own instead
    $(document).ready(function() {
      console.log('Document ready');
    });
    
    $(document).on("contextmenu", function(event) {
      // Avoid the real one if this is the link
      if ($(event.target).hasClass("sim-row-edit")) {
        console.log("right click identified");
    
        // add border
        $(event.target).parent().addClass("selected");
    
        event.preventDefault();
        target_element = $(event.target);
        clicked_link = $(event.target).text();
        clicked_url = $(event.target).attr("href");
        clicked_id = $(event.target).attr("id");
    
        //$(event.target).text("ttt");
    
        //alert(clicked_link);
        // Show contextmenu
        $(".custom-menu").show(100).
        css({
          top: event.pageY + "px",
          left: event.pageX + "px"
        });
      }
    });
    
    // hide our context menu when the document is clicked
    $(document).on("mouseup", function() {
      $(".custom-menu").hide(100);
      $(".selected").removeClass("selected");
    
    });
    
    $(".custom-menu li").click(function() {
      //alert("hii2");
      // This is the triggered action name
      switch ($(this).attr("data-action")) {
        // A case for each action. Should personalize to your actions
        case "first":
          // console.log("first");
          console.log("-----");
          console.log(clicked_link);
          console.log(clicked_url);
          console.log(clicked_id);
          console.log(target_element);
    
    
          //trying to clone the div using below code but it is not working.
          console.log(event.target);
          thisDiv = target_element.parent();
          thisDiv.clone().insertAfter(thisDiv);
    
          //console.log($(this).parent().text());
          break;
        case "second":
          console.log("second");
          break;
        case "third":
          console.log("third");
          break;
      }
    });
    .custom-menu {
      display: none;
      z-index: 1000;
      position: absolute;
      background-color: #fff;
      border: 1px solid #ddd;
      overflow: hidden;
      width: 120px;
      white-space: nowrap;
      font-family: sans-serif;
      -webkit-box-shadow: 2px 2px 7px 0px rgba(50, 50, 50, 0.5);
      -moz-box-shadow: 2px 2px 7px 0px rgba(50, 50, 50, 0.5);
      box-shadow: 2px 2px 7px 0px rgba(50, 50, 50, 0.5);
    }
    
    .custom-menu li {
      padding: 5px 10px;
    }
    
    .custom-menu li:hover {
      background-color: #4679BD;
      cursor: pointer;
    }
    
    .selected {
      border: 1px solid red;
    }
    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="UTF-8">
      <link href="style.css" rel="stylesheet" type="text/css" />
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    
      <title>title</title>
    </head>
    
    <body>
    
      <div>
        Lorem..
        <a href="http://goo.com" id="id-goo" class="sim-row-edit" data-type="link">right click on me and click clone, but its not working</a>
      </div>
    
    
      <div>
        <a href="http://voo.com" id="id-voo" data-type="link">voo</a>
      </div>
    
      <ul class='custom-menu'>
        <li data-action="first">Clone</li>
        <li data-action="second">Second thing</li>
        <li data-action="third">Third thing</li>
      </ul>
    
      <script type="text/javascript" src="script.js"></script>
    </body>
    
    </html>