2011-06-06 106 views
0

我需要点击一个关闭img,并删除img所在的所有列。jquery如何从表中删除一列

我试图做这样的事情:

  var colnum = $(this).closest("td").prevAll("td").html(); 

    $(this).closest("table").find("tr td:eq(" + colnum + ")").remove(); 

但是,它不工作。

编辑:伙计们,第一次发帖,我很难打开问题。 我编辑一切。您可以在DEMO

一看HTML演示:New Demo

,如果你们看到红色的东西在餐桌上,我需要删除时,点击却“CLOSE”。 删除我点击的列。

ps:伙计们,红班只是为了让大家看看哪里需要成为关门活动。

+0

嵌套表?哎哟。如果你不删除嵌套列的列,这将会容易得多。 – 2011-06-06 15:03:13

+2

代码中有很多错误,处理函数''}}'应该以'});'结尾。另外,HTML属性应该用双引号'''而不是单引号括起来,另外,你分配的colnum变量没有得到列号,用'$(this).index();'来代替。如果你正在显示表格数据,但是我不确定嵌套表是否合适,并且完全删除列也是一种代码味道,那么这不是一件坏事......我没有任何真正有用的建议,而不是开始修复所有你的错误第一个在继续前进之前 – 2011-06-06 15:05:21

+0

John Strickler:sry,我在jsfiddle中“粘贴”了代码,遗漏了一些东西,在我的源代码中,它的确可以, – 2011-06-06 16:08:03

回答

1

在您的实例演示,我们应该真正关闭...我修改了它稍微和密切的列消失,但我不确定你还期望被删除。

在这里看到:http://jsfiddle.net/gfosco/TdCYy/24/

问题正在嵌套表内...你想从小区父表父表中删除列。

更新这里的例子:

http://jsfiddle.net/gfosco/TdCYy/37/

+0

html现在好了,我编辑演示中的所有东西,请看看 – 2011-06-06 16:27:11

+0

@ric_bfa更新的工作顺序示例...问题是深度2表,让我知道如果你有任何问题。 – Fosco 2011-06-06 17:23:05

+0

@Fosco:是的,它的工作,但是柱子的数量是动态的,我有一个输入,在输入中我将显示多少柱子,每个柱子都加上一个紧密的按钮,去掉刚才的柱子add,exp:http://jsfiddle.net/5AFJn/19/我可以有一些columms。 – 2011-06-06 17:41:32

0

您应该能够使用第n个孩子选择以获得在第n列的单元格,像这样:

$(this).closest("table").find("tr td:nth-child(" + colnum + ")").remove(); 
-1

退房这个环节,我已经编辑您的演示http://jsfiddle.net/TdCYy/39/

这是HTML不变,除了类第一行加入到第一红行:


<table border='1' width='100%'> 
    <tr> 
     <td>Somthing 1</td> 
     <td>Somthing 2</td> 
     <td>Somthing 3</td> 
     <td> 
      <table border='1' style='border: solid red;' width='100%'> 
       <tr class="first-row"> 
        <td colspan='2'> 
         Something 
         <span style='float: right' class='img_romove_columm'>Close</span> 
        </td> 
       </tr> 
       <tr> 
        <td>Another</td> 
        <td>Another 1</td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
    <tr> 
     <td>Result</td> 
     <td>Result</td> 
     <td>Result</td> 
     <td class='red'>Result</td>      
    </tr> 
    <tr> 
     <td>Result</td> 
     <td>Result</td> 
     <td>Result</td> 
     <td class='red'>Result</td>      
    </tr> 
    <tr> 
     <td>Result</td> 
     <td>Result</td> 
     <td>Result</td> 
     <td class='red'>Result</td>    
    </tr> 
    <tr> 
     <td>Result</td> 
     <td>Result</td> 
     <td>Result</td>    
     <td class='red'>Result</td> 
    </tr>    
</table> 

CSS未触及。

的Javascript应该是(这工作):

$(".img_romove_columm").click(function(){ 
    // Hide the first row that has the close button, and also hide the row right after it (another, another1) 
    $('tr.first-row, tr.first-row + tr').hide(); 
    // Hide everything that has the red class (result, result, result, result,) 
    $('td.red').hide(); 
}); 

这是你在找什么?

+0

忘记课程“红色”,只是想看看事件点击会在哪里快速移动,我的问题是,我需要关闭所有课程,而无需任何课程或ID规范 – 2011-06-06 17:51:45

-1

这是我想出的一个例子。只需将相同的类(red)应用于所有要消失的元素,包括嵌套表。然后,你可以调用

$('.red').hide(); 

FIDDLEhttp://jsfiddle.net/Jaybles/TdCYy/42/

+0

我在演示中提供的红色课程只是为了看点击事件将会出现:) – 2011-06-06 17:51:00

+0

是的,我知道。它可以是任何类。它甚至可以是一个不在你的CSS中的类。这只是为了识别你想要出现的一组对象。 '红色'可以很容易'可关闭'或其他任何东西。在附注中,如果你对每一个与你想要的不一样的答案进行投票,不要指望得到很多帮助。在这个页面上,我们两个给了你两个实例,并且因为他们在其中有'red'这个词,所以他们被低估了。你的问题中没有任何地方指出,这必须在没有课程的情况下完成。我对你的问题投下了一票,因为它没有得到适当的询问。 – Dutchie432 2011-06-06 21:03:47