这可能是一个非常奇怪或简单的错误。但它在我的脑子里大声笑。下面的代码是针对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">
答案 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加载页面之后添加了项目。
感谢您的研究 - 我需要分析我的代码中的其他部分,导致无法正常工作。