我有这个jQuery对象,我需要拉入一个函数,这可能吗?请参阅代码段:
var input;
jQuery('.upload').live('click', function()
{
input = jQuery(this).find(".image-path");
tb_show(title, 'media-upload.php?type=image&TB_iframe=true');
return false;
});
window.send_to_editor = function( html )
{
if (input)
{
console.log(input); // works and defined at this point...
var data {
action: "doFunction"
};
jQuery.post( ajaxurl, data, function( response )
{
console.log(input); // does not work, not defined...why??
input.val(response); // this gives me input.val(response) is not a function
});
}
}
答案 0 :(得分:0)
您可能没有在window对象中定义imageObj。我想你在一个功能块中调用它的定义。
这个小提琴表明它有效:http://jsfiddle.net/dystroy/fDd7P/
var imageObj = jQuery(".image"); // pulls <img src="#" class="image" />
function custom() {
console.log(imageObj.attr('src')); // and this would be undefined.
}
custom(); // logs '#', type F12 to see it
如果您在var imageObj = jQuery(".image");
阻止中撰写$(window).load(...
,请务必从此处删除var
并在var imageObj;
之前声明$(window).load(...
使它成为全球性的。
答案 1 :(得分:0)
主要编辑现在OP已经披露了他们的实际代码:
问题是input
的值直到稍后单击上传按钮时才会设置,但是您之前尝试使用该值,因此它仍然未初始化。您应该将代码更改为以下内容:
jQuery('.upload').live('click', function()
{
var input = jQuery(this).find(".image-path");
if (input.length) {
var data {
action: "doFunction"
}
jQuery.post( ajaxurl, data, function( response ) {
input.val(response); // this gives me input.val(response) is not a function
});
}
return false;
});
由于您尚未公开HTML,我仍然不确定您的jQuery是否与您的HTML匹配。您当前的代码正在查找class="image-path"
的对象,该对象是单击按钮的子级。这是一种有点不寻常的HTML形式,这使我怀疑你的jQuery不适合你的HTML,这将是另一个需要解决的问题。
OP之前的原始答案披露了他们的实际代码。
你所要做的就是两件事:
imageObj
在适当的范围内定义,以便在回复回调中提供。.val()
方法的正确类型的DOM对象。由于通常<input>
对象具有.val()
方法,而<input>
对象通常不是容器对象,我怀疑这至少是您问题的一部分。有两种方法可以确保在适当的范围内声明imageObj
:
像这样:
function myFunc() {
var imageObj = jQuery(this).parents('.image-wrapper');
var data = {
action: "doAjax"
};
jQuery.post(ajaxURL, data, function(response)
{
imageObj.val(response); // this is undefined when run
});
}
要确保imageObj
解析为正确类型的DOM对象,您可以添加调试代码以首先检查imageObj.length
是否为非零,然后您需要确保具有class="image-wrapper"
的父对象实际上是<input>
个具有有效.val()
方法的对象。由于输入对象通常不是容器对象,因此这可能是您的问题的一部分。如果您向我们展示您的HTML,我们可以更具体地提供建议。
以下是一个有效的例子:http://jsfiddle.net/jfriend00/EJ8yu/