我在 JS 中编码已经有一段时间了,但不知何故,我总是遇到一些“抓头”类型的问题。我认为我需要进行一些挖掘,但同时有人可以帮助解决这个问题吗?
所以这就是问题所在: 我将项目(由 $(this) 获取)传递到回调函数中。这段代码不起作用——当我真的认为它应该起作用的时候。由于我已将 $(this) 放入变量中(克隆数据?),然后通过函数将其传递给回调,它肯定不应该丢失数据吗?但确实如此,而且非常可怕
// Allow hrefs with the class 'ajax' and a rel attribute set with a selector to load via ajax into that selector.
$(".ajax").unbind("click").click
(
function(e)
{
var locationhint = $(this).attr("rel");
var $location = $(locationhint);
$location.html ("<img src='images/blockloading.gif' />");
$location.load($(this).attr("href").replace("index.php", "ajax.php"), '', function($location){dready($location);});
e.preventDefault();
}
);
现在那行不通了。
这个有效:
$(".ajax").unbind("click").click
(
function(e)
{
$("#myspecificdiv").load($(this).attr("href").replace("index.php", "ajax.php"), '', function(){dready($("#myspecificdiv"));});
e.preventDefault();
}
);
我认为这是一个范围问题,但我也这样做了,这应该可以工作,因为它与上面的“静态”完全相同,本质上是因为它传递了元素的文本 ID。这一个也打破了:。
$(".ajax").unbind("click").click
(
function(e)
{
var locationhint = $(this).attr("rel");
var $location = $(locationhint);
$location.html ("<img src='images/blockloading.gif' />");
var locationid = "#" + $location.attr("id");
$location.load($(this).attr("href").replace("index.php", "ajax.php"), '', function(locationid){dready($(locationid));});
e.preventDefault();
}
);
损坏的,当我 console.log locationid 时,返回目标 DIV 的内部 HTML。$location.attr("id"); 当其他任何地方都没有调用它时,不能返回原始 HTML 吗?所以这是我接受的范围吗?但是,它是如何让内部 HTML 吐出的呢?
有什么解决办法吗?
更新: 在我发布此内容 12 秒后,我想到 function($location){dready($location);} 回调上的内部函数可能会自动通过 AJAX 调用响应?但为什么?