Jquery:单击事件以删除()图像元素单击和相邻的图像元素

时间:2015-07-21 06:54:49

标签: jquery html onclick remove-method

这可能是一个非常奇怪或简单的错误。但它在我的脑子里大声笑。下面的代码是针对2 <img>元素的单击事件处理程序。您单击归类为“撤消”的<img>元素 - 这应该删除被点击的<img>以及同时紧接在其旁边的“bin”元素。我设法删除了一个或另一个,但不是两个。有人可以帮忙吗? 谢谢 沃尔特

JS:

$('ul').on('click','.undo',function(e) {
    $(this).remove();   
    $(this).prev().remove();

HTML:

<img src="images/bin.png" align="right" class="bin">
<img src="images/undo.png" align="right" class="undo">

3 个答案:

答案 0 :(得分:0)

一旦你调用$(this).remove();,该元素就会从dom中移除,之后$(this).prev()将找不到任何元素,因为它不会成为分离元素的任何先前兄弟

$('ul').on('click', '.undo', function (e) {
    $(this).prev().addBack().remove();

或者

$('ul').on('click', '.undo', function (e) {
    $(this).prev().remove();
    $(this).remove();

答案 1 :(得分:0)

交换删除过程,如下所示:

import java.io.* ;
import java.net.* ;
import java.util.*;


public class Modcli {

  public static void main(String argv[]) {
    if (argv.length < 4) {
      System.out.println("usage: java test3 dns_name unit reg_no num_regs");
      System.out.println("eg java test3 aswales8.modicon.com 5 0 10");
      return;
    }
    try {
      String ip_adrs = argv[0];
      int unit = Integer.parseInt(argv[1]);
      int reg_no = Integer.parseInt(argv[2]);
      int num_regs = Integer.parseInt(argv[3]);
      System.out.println("ip_adrs = "+ip_adrs+" unit = "+unit+" reg_no = "+
      reg_no+" num_regs = "+num_regs);

      // set up socket
      Socket es = new Socket(ip_adrs,502);
      OutputStream os= es.getOutputStream();
      FilterInputStream is = new BufferedInputStream(es.getInputStream());
      byte obuf[] = new byte[261];
      byte ibuf[] = new byte[261];
      int c = 0;
      int i;

      // build request of form 0 0 0 0 0 6 ui 3 rr rr nn nn
      for (i=0;i<5;i++) obuf[i] = 0;
      obuf[5] = 6;
      obuf[6] = (byte)unit;
      obuf[7] = 3;
      obuf[8] = (byte)(reg_no >> 8);
      obuf[9] = (byte)(reg_no & 0xff);
      obuf[10] = (byte)(num_regs >> 8);
      obuf[11] = (byte)(num_regs & 0xff);

      // send request
      os.write(obuf, 0, 12);

      // read response
      i = is.read(ibuf, 0, 261);
      if (i<9) {
        if (i==0) {
          System.out.println("unexpected close of connection at remote end");
        } else {
          System.out.println("response was too short - "+i+" chars");
        }
      } else if (0 != (ibuf[7] & 0x80)) {
        System.out.println("MODBUS exception response - type "+ibuf[8]);
      } else if (i != (9+2*num_regs)) {
        System.out.println("incorrect response size is "+i+

            " expected"+(9+2*num_regs));
      } else {
        for (i=0;i<=2;i++) {
          int w = (ibuf[0+i+i]<<8) + ibuf[1+i+i];
          System.out.println("word "+i+" = "+w);
        }
        for (i=3;i<=5;i++) {
          int w = (ibuf[i+3]) ;
          System.out.println("word "+i+" = "+w);
        }
        for (i=0;i<num_regs;i++) {
          int w = (ibuf[9+i+i]<<8) + ibuf[10+i+i];
          System.out.println("word "+i+" = "+w);
        }

      }

      // close down
      es.close();
    } catch (Exception e) {
      System.out.println("exception :"+e);
    }
  }
}

<强> DEMO

  

您在这里做的是尝试删除$('ul').on('click','.undo',function(e) { $(this).prev().remove(); $(this).remove(); }); 元素   删除previous元素后,current将不会被删除   能够在删除后找到jquery元素,以删除其this   元件。因此,首先删除其previous元素,然后删除   previous元素。

答案 2 :(得分:0)

我玩了剩余的代码并意识到问题就在那里。问题在于冒泡效果,并且在通过DOM加载页面之后添加了项目。

感谢您的研究 - 我需要分析我的代码中的其他部分,导致无法正常工作。