是“[100,100,200,200]”;
var crop_position=user.data.crop_position.slice(1,user.data.crop_position.length-2);
$('#cropbox').Jcrop({
setSelect: crop_position,
onChange: showPreview,
onSelect: showPreview,
aspectRatio: 1
});
这样做我的jcrop不是在设置位置选择我能做什么 这是由于我传递的字符串如何删除它,
我知道这是一个愚蠢的问题,但我很多时候也遇到过这种问题,请告诉我将来这些问题不会来。
问候
rahul
答案 0 :(得分:0)
setSelect - array [x,y,x2,y2]设置初始选择区域
所以你需要一个数组而不是setSelect
的字符串。为什么不让user.data.crop_position
成为数组?如果无法更改表示,您可以使用简单的算法进行转换:
var pos = '"[ 100, 100, 200, 200 ]"'; // user.data.crop_position
var crop_position = pos.replace(/["\[\] ]/g, '').split(',');
for (var i = crop_position.length; i--;) {
crop_position[i] = +crop_position[i];
}
现在你有一个值数组而不是字符串。
答案 1 :(得分:0)
Jcrop Manual表示setSelect
采用数组,而非字符串。
[100, 100, 200, 200] // rather than
'[100, 100, 200, 200]'
如果您无法更改输入格式,至少可以在将其传递给Jcrop之前使用$.parseJSON
对其进行解析:
var crop_position = $.parseJSON(user.data.crop_position);
编辑:如果有必要(双引号实际存在于字符串值中),您可以使用$.parseJSON
两次,首先解码编码的字符串值,然后再解码数组内的数组编码的字符串:
var crop_position = $.parseJSON($.parseJSON(user.data.crop_position));
或者在$.parseJSON
之前删除周围的双引号:
var crop_position = $.parseJSON(user.data.crop_position.slice(1, -1));