Javascript 通过引用将调用作为调用值传递
我一直在使用这段代码将ImageId移动到jCrop 但是,Javascript 通过引用将调用作为调用值传递,javascript,html,Javascript,Html,我一直在使用这段代码将ImageId移动到jCrop 但是,\u ImageId变量是通过引用给出的 如何通过值将\u ImageId变量赋予jCrop var _ImageId = 0; $(document).ready( function(){ $('.page .image').attr("id", function(){ _ImageId = $(this).attr("id"); return $(
\u ImageId
变量是通过引用给出的
如何通过值将\u ImageId
变量赋予jCrop
var _ImageId = 0;
$(document).ready(
function(){
$('.page .image').attr("id", function(){
_ImageId = $(this).attr("id");
return $(this).attr("id");
}).Jcrop({
ImageId : _ImageId, // my problem is here , when _ImageId change , all of them will change
onSelect: Page_ImageSelected
});
}
你的代码有点。。。“奇怪”
也许你应该试试这样:
$(document).ready(function() {
$('.page .image').each(function() {
var element = $(this);
element.Jcrop({
ImageId : element.attr('id'),
onSelect: Page_ImageSelected
});
});
});
当您使用数字、整数、浮点、字符串、布尔等“简单”类型时,Javascript使用“按值”调用
这里的问题是您的代码。您已经通过值传递了
\u ImageId
,JCrop
方法将接收其ImageId
属性为0
(或attr
回调中指定的值)的对象当\u ImageId
被更改时,它不会更改。所有javascript值都是按值传递的,即使它们是对对象的引用。即使我认为您的代码应该可以工作,但它无论如何都不会工作,即使它在var元素=$(这)之前不会运行;因此,可能您的选择器.page.image
错误。但是如果没有你的html代码,我就说不出来了。它什么时候会改变,你认为是什么改变了它?当然,属性可能会更改,但不会从赋值更改为\u ImageId