单击 grid/table 的新行时尝试删除 div

Trying to delete divs if a new row of the grid/table is clicked

在下面的代码中,当我点击 jQXgrid 的任何一行时(基本上这一行 $(".clickable").on("rowselect", handleClick); 被执行),我看到网格下方的文本 click me to display jQXGrid!。 当我单击此文本时,我会再次看到此文本,只要用户继续单击最新文本,它就会显示。

但是我想添加这个功能:

假设用户单击了 jQXgrid 的第一行,他将看到 click me to display jQXGrid! 文本,只要用户继续单击最新的文本,该过程就会继续。然而 当用户单击第二行或任何其他行时,我注意到文本 click me to display jQXGrid! 被添加到最新文本或 div 之后。我不要这一步。

我正在寻找的是,一旦用户点击第二行或任何其他行(除了之前使用的行(在我们的例子中是第 1 行)),他应该只会看到文本 click me to display jQXGrid! 和 如果用户决定继续一次又一次地单击最新文本,则链可以继续。基本上,单击第一行时创建的链会被销毁并且 一旦用户点击 jQXgrid 的第二行或任何其他行,一个新的链就会开始。

当我尝试在 handleClick 函数中使用以下代码行时:

if($(".clickable").length != 0){
                    $(".clickable").remove();
                }

我注意到,一旦我点击网格,它就消失了,这是有道理的,因为我使用上面的代码删除了包含可点击 class 的 div。我怎样才能实现上面解释的功能?

谢谢。

一些 jQXGrid 相关的指针,如果它可以帮助某人回答我的问题:

1) jQXGrid 已经 destroy 属性 像这样销毁网格 $(".clickable").jqxGrid("destroy");

2) 就 jQXgrid 而言,我可以通过将其放入 handleClick 函数中来获取行的索引值:console.log(e.args.rowindex);

var source = {
  localdata: [
    ["https://www.samplelink.com", "Maria Anders", "Sales Representative", "Obere Str. 57", "Berlin", "Germany"],
    ["https://www.samplelink.com", "Ana Trujillo", "Owner", "Avda. de la Constitucin 2222", "Mxico D.F.", "Mexico"],
    ["https://www.samplelink.com", "Antonio Moreno", "Owner", "Mataderos 2312", "Mxico D.F.", "Mexico"],
    ["https://www.samplelink.com", "Thomas Hardy", "Sales Representative", "120 Hanover Sq.", "London", "UK"],
    ["https://www.samplelink.com", "Christina Berglund", "Order Administrator", "Berguvsvgen 8", "Lule", "Sweden"],
    ["https://www.samplelink.com", "Hanna Moos", "Sales Representative", "Forsterstr. 57", "Mannheim", "Germany"],
    ["https://www.samplelink.com", "Roland Mendel", "Sales Manager", "Kirchgasse 6", "Graz", "Austria"]
  ],
  datafields: [{
      name: 'link',
      type: 'string',
      map: '0'
    },
    {
      name: 'ContactName',
      type: 'string',
      map: '1'
    },
    {
      name: 'Title',
      type: 'string',
      map: '2'
    },
    {
      name: 'Address',
      type: 'string',
      map: '3'
    },
    {
      name: 'City',
      type: 'string',
      map: '4'
    },
    {
      name: 'Country',
      type: 'string',
      map: '5'
    }
  ],
  datatype: "array"
};
var dataAdapter = new $.jqx.dataAdapter(source);


$(".clickable").jqxGrid({
  width: 800,
  height: 270,
  source: dataAdapter,
  columnsresize: true,
  sortable: true,
  columns: [{
      text: 'Link',
      datafield: 'link',
      width: 200
    },
    {
      text: 'Contact Name',
      datafield: 'ContactName',
      width: 150
    },
    {
      text: 'Contact Title',
      datafield: 'Title',
      width: 100
    },
    {
      text: 'Address',
      datafield: 'Address',
      width: 100
    },
    {
      text: 'City',
      datafield: 'City',
      width: 100
    },
    {
      text: 'Country',
      datafield: 'Country'
    }
  ]
});

var id = 1;


$(".clickable").on("rowselect", handleClick);



function handleClick(e) {

  var newEl = $("<div/>", {
    class: "clickable",
    id: "grid" + id,
    style: "margin:100px 10px 20px 200px ",
    text: 'click me to display jQXGrid!'
  }).append($("<div />", {
    id: "button"
  }));


 // console.log("Test Row Index Value");
  //console.log(e.args.rowindex); 
  

  //$("#button").jqxButton({ value: 'Export Grid '});

 

  id++;

  console.log("Value of ID here:" + id);
  // add click Event listener to the newly created div, the same function(here I name irt 'handleClick') is the handler.
  newEl.on('click', handleClick);

  
  $(this).parent().append(newEl);
  // remove click Event from the current clicked div.
  $(this).off('click');



}
.test {
  margin: 100px 10px 20px 200px;
}
<script src="https://jqwidgets.com/public/jqwidgets/jqx-all.js"></script>
<link href="https://jqwidgets.com/public/jqwidgets/styles/jqx.base.css" rel="stylesheet" />
<div class="wrapper">
  <div id="grid" class="clickable" style="margin:100px 10px 20px 200px;"></div>
</div>

如果要删除所有新添加的 div.clickable 元素,除了最近的一个,试试这个:

$('#grid').nextAll('.clickable').slice(0, -1).remove();

正在尝试使用 OP 的代码段提供答案:

chat, we were able to arrive an implementation that achieves what he/she was looking for, in http://jsfiddle.net/amo4qLb8/44/.

中与@Coder 澄清后