这个jQuery片段有什么问题?

mor*_*ous 1 jquery

我在FF控制台中收到以下错误消息:

"未捕获的异常:语法错误,无法识别的表达式:""

jQuery.noConflict();
jQuery(function() {
    jQuery('#foobar').click(function(){
        var id = jQuery(this).parent().parent().attr('id');
        var idstr = '"#'+id+'"';
        jQuery.post("example.com/callback.php", {id: id },
                function(data){
                jQuery(idstr).html(data.msg); // <- error occurs here 
                }, "json");
    });
});
Run Code Online (Sandbox Code Playgroud)

可以看出,我想用接收到的数据更新div的内容.

这些是我到目前为止所做的测试:

  1. 插入alert()语句以确保

    • 从服务器正确返回数据(PASS)
    • 该元素由idstr表示存在(PASS)
  2. 注释掉替换div内容的行,以查看错误消息是否消失(PASS)

我看不出上面的代码有什么问题(但后来我对jQuery相对较新).有人能发现造成错误的原因吗?

此外,我想简要地在视觉上突出显示已更新其内容的div(有点像SO上的内容,当接受答案时) - 我正在考虑更改元素类和设置定时器等,但可能做一个更简单的方法 - 任何人都可以帮助如何做'突出显示部分'吗?

Sar*_*raz 5

这个:

jQuery(document).function(){
Run Code Online (Sandbox Code Playgroud)

应该:

jQuery(document).ready(function(){
Run Code Online (Sandbox Code Playgroud)

更多信息:

http://api.jquery.com/ready/

另外为什么不使用:

var idstr = '#'+id;
Run Code Online (Sandbox Code Playgroud)

代替:

var idstr = '"#'+id+'"';
Run Code Online (Sandbox Code Playgroud)

既然idstr是一个变量,你不需要在它周围加上引号,否则它只是字符串,从而给你错误的结果.