在JQuery ajax函数中使用jQuery插件的范围问题

时间:2010-12-11 18:49:02

标签: javascript jquery

我尝试在AJAX请求之后运行的函数中使用jQuery qtip插件。插件不可访问,我以其他方式管理问题(在qtip内容参数中加载ajax),但我仍然很好奇问题是什么。

<script type="text/javascript" src="jquery.qtip-1.0.0.min.js"></script>
//load plugin
<script type="text/javascript">    
(function ($) {
    jQuery("div.joomimg24_imgct").each(function () {
        jQuery(this).find(".joomimg24_txt").hide();
        var textField = jQuery(this).find(".joomimg24_txt ul li");
        var title = textField.get(0).innerHTML;
        var dataDodania = textField.get(2).innerHTML.split(':')[1];
        var author = textField.get(1).innerHTML.split(':')[1];
        var commnetsC = textField.get(3).innerHTML.split(':')[1];
        var link = jQuery(this).find("a").attr('href');
        var idNumber = getUrlValue('id', link);
        jQuery.ajax({
            url: "ajax/getvote.php",
            cache: false,
            data: "photoid=" + idNumber,
            success: function (html) {
                ajaxFunc(jQuery(this), html, title, author, commnetsC,
                                dataDodania);
            },
            error: function (err, ans) {
                alert("error  : " + err + "  kod : " + ans);
            }
        });
    })
    function getUrlValue(name, link) {
        [...]
        return decodeURIComponent(results[1].replace(/\+/g, " "));
    }
    function ajaxFunc(curObj, rating, title, author, commnetsC, data) {
        if (!jQuery.qtip) {
            alert("jQuery plugin not loaded");
            return;
        }
        var newText = "</div>...<div>"
        //qtip is not loaded!
        curObj.qtip({
            content: newText,
            show: 'mouseover',
            hide: {
                when: 'mouseout',
                fixed: true
            },
            position: {
                target: 'mouse',
                adjust: {
                    mouse: true
                }
            },
            style: {
                height: 'auto',
                width: 'auto',
                padding: 1,
                marginRight: 0,
                //20 , aby wyrownac
                background: 'url(/templates/upsilum/images/bg-slide.jpg)',
                color: 'white',
                border: {
                    width: 2,
                    radius: 3,
                    color: 'white'
                }
            }
        })
        return curObj;
    }
})(jQuery);
</script>

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

jQuery.ajax({
        url: "ajax/getvote.php",
        cache: false,
        data: "photoid=" + idNumber,
        success: function(obj, h, t, a, c, d) { 
                  return function (html) {
                    ajaxFunc(obj, h, t, a, c, d);}
          } (jQuery(this), html, title, author, commnetsC),
        error: function (err, ans) {
            alert("error  : " + err + "  kod : " + ans);
        }
    });

如果没有完全包围你正在做的事情,我假设你期望html,title,author等变量在异步调用返回时在范围内,实际上它们可能是不是

我还没有完全测试过,所以它可能在语法上不正确,甚至不能做你想要的。

编辑:它甚至可能不会做我想要它做的事情,但至少它可以为你提供一个起点,让你了解如何在你希望它们的范围内获取变量。