2012-01-11 29 views
0

我必须使用类“结果”和唯一ID加载多个HTML部分。jQuery中的JavaScript变量.load()参数

$('.result').load('/check.php', 
     {'id': this.id, 'url':'<?=$url?>'} 
    ); 

一个PHP脚本(check.php)将根据它获得的参数(ID & URL)产生不同的HTML。我想通过this.id作为参数,但页面永远不会被加载。

this.id是一个字符串对不对?如果我通过说'你好'来替换this.id,它会起作用。

+0

你认为'这个'是什么?除非这个代码在JS对象的方法内,否则它将是'window'。 – Alnitak 2012-01-11 22:29:26

+0

它取决于你所拥有的代码无法看到的上下文 – Esailija 2012-01-11 22:29:35

回答

0

如果您预计this.id是传递给.load的每个个体.result元素的ID,则这不起作用。您的代码不会创建新的上下文,因此this将成为.load调用之外的任何内容。

应该工作:

$('.result').each(function() { 
    $(this).load('/check.php', 
     {'id': this.id, 'url':'<?=$url?>'} 
    ); 
}); 

因为.each调用并设置this到每个选中的元素,又将。

+0

我想象使用数据对象而不是使用''?id ='+ this.id'的好处是会使用正确的分隔符('?'或'&')。这是事实吗?还是有更多的比? – Jasper 2012-01-12 00:11:51

+0

数据对象将发出一个POST并且?id =会给出一个GET方法。这不是问题,而是这个.id没有明确定义的事实。谢谢@Alnitak – emiel187 2012-01-12 00:33:55

+0

@Jasper使用数据对象的真正好处是可以确保内容自动进行URL编码。 – Alnitak 2012-01-12 08:16:59

0

this.id不一定是一个字符串。 javascript关键字this很漂亮quirky,所以要小心它。