0

我有一段相当复杂的代码(JQuery 和 HTML5 Web SQL)从数据库中删除信息。但是,虽然数据库删除工作正常,但我想让信息同时从视图中消失(直到页面刷新并再次查询数据库时才会消失)。

我很确定这只是让选择器正确的问题

目前我有

$('.remove_event').live('click', function() {
    //TRIGGERS SQL REMOVE
    mbffdb.webdb.deleteevent($(this).attr('id')),
    //MAKES INFO DISSAPPEAR
    $(this).attr('id').addClass('displaynone');
});//END CLICK

该信息包含在一个 div 中,该 div 具有一个动态 id :($(this).attr('id')该 ID 在 SQL 语句中用于删除)。

如果有人可以帮助我,那真是太棒了!

4

3 回答 3

2

问题是,您将一个类...添加到一个字符串中。跟我来:

$(this) 

是一个元素

$(this).attr("id") 

是它的属性“id”的值,即一个字符串,所以你不能给它添加一个类。

顺便说一句,您要添加id还是class?目前还不清楚。如果要添加 id,请使用.attr("id","mynewid"). 如果要添加类,请使用$(this).addClass("class")


编辑:您可能被 JQuery 的可链接性误导了,即在 JQUery 元素或元素集上运行的许多函数返回另一个元素或元素集。

例如:

$("div.mydiv").parent().next().find("p").removeClass("otherclass");
              ^        ^      ^         ^

在每次调用 (^) 中,函数都会返回其他元素,因此您可以附加另一个函数来对这些元素进行操作,从而产生更多元素等等。但对于某些功能来说,情况并非如此:

.val() .text() .html()

它返回“纯”值,而不是元素,因此在它们之后使用addClass()仍然操作 con 元素的函数是没有意义的。

于 2012-06-25T01:20:35.907 回答
2

改成$(this).attr('id').addClass('displaynone');这个$(this).addClass('displaynone');

于 2012-06-25T01:20:54.317 回答
0
$('.remove_event').live('click', function() {
    // $(this) refers to the element that was clicked.
    // $(this).attr('id') will return the attribute "id" of the element

    // TRIGGERS SQL REMOVE
    // the line below will execute the "deleteevent" function
    // passing the attribute id of $(this) as a parameter.
    mbffdb.webdb.deleteevent($(this).attr('id')),

    // MAKES INFO DISSAPPEAR
    // the line below will not work because you're trying to add a class 
    // to a non-element. ($(this).attr('id') returns the attribute! 
    // you can't chain!)
    // $(this).attr('id').addClass('displaynone');

    // Instead you should use this line 
    // which will add a class "displaynone" to the element $(this)
    $(this).addClass('displaynone');
    // or you can also set 'style="display:none;"' by doing
    $(this).css('display', 'none');
});//END CLICK
于 2012-06-25T01:32:34.720 回答