1

I am having trouble hiding this page element with the id below in the html code

<table cellspacing=5 cellpadding=3>
  <tr>
    <td id="lst2"><h4>Apple Ipad for sale N70,000 (negotiable)</h4></td>
    <td><a href="unibay.php" class="button edit">EDIT</a></td>
    <td><a href="#" onclick="del('lst1');" class="button cross">DELETE</a></td>
  </tr>
  <tr id="lst2">
    <td><h4>Apple Ipad for sale N70,000 (negotiable)</h4></td>
    <td><a href="unibay.php" class="button edit">EDIT</a></td>
    <td><a href="#" value="list2" onclick="del('lst1');" class="button">DELETE</a></td>
  </tr>
</table>

I want to be able to hide the element with the selected id using jQuery called in a javascript function. Below is the code but its not working:

function del(obj) {
    $(document).ready(function(){
        var tdiv = document.getElementById(obj) ;
        var sdiv = "#" + tdiv ;
        $('.button').click(function () {
            $(sdiv).fadeOut('slow');
        });
    });
}
4

3 回答 3

3

我认为你应该这样做,因为你obj包含一个字符串,id你的目标,那么下面的方法就足够了。

var sdiv = "#" + obj;
$('.button').click(function () {
   $(sdiv).fadeOut('slow');
});

您的代码中的问题

  • var tdiv = document.getElementById(obj);行返回一个 DOM 元素。因此,如果您需要在代码中使用它,那么它将如下所示:

    function del() {
       var tdiv = document.getElementById(obj);
       $('.button').click(function() {
         $(tdiv).fadeOut('slow');
       });
    }
    

在这里,$(tdiv)将把你的tdiv元素变成一个 jQuery 对象。但tdiv.fadeOut('slow')不会工作。

  • 而且你不需要$(document).ready()在你的del()函数中。所以你的代码看起来像:

    function del(obj) {
        var sdiv = "#" + obj;
        $('.button').click(function () {
          $(sdiv).fadeOut('slow');
        });
     }
    
于 2012-06-16T07:18:42.603 回答
0
$(function() {

    $('.button').click(function () {
        $(this).parent().parent().fadeOut('slow');
    });

});

您的代码有问题:

  • document.ready不应该在函数内部。你把函数放在里面document.ready
  • 您将 click 事件绑定在一个函数内。这不是必需的,因为您可以this在 click 事件中使用来获取单击的元素,然后使用.parent()两次来获取tr它所属的元素。(一旦得到你td,再次得到你td的父级tr
于 2012-06-16T07:23:19.230 回答
0

在这一行:

        var tdiv = document.getElementById(obj);

getElementById() 返回您分配给“tdiv”的 DOM 元素。因此,当您将它连接到“#”字符串时,您实际上是在添加一个字符串 + 一个 DOM 对象(这不起作用)。

有一个简单的解决方法。由于您已经将元素的 id 存储在变量 'obj' 中,因此可以将其连接起来:

        var sdiv = "#" + obj;
        $('.button').click(function () {
            $(sdiv).fadeOut('slow');
        });

其他一些海报指出,您不应将 document.ready() 放在 del 函数中,而应将其放在函数之外。我完全不同意。如果您遵循他们的建议,您的代码将中断,因为“del”函数在全局命名空间中不可用。

于 2012-06-16T07:54:33.800 回答