为什么fancybox没有触发?

时间:2011-06-27 06:24:16

标签: jquery ajax scope fancybox

<script type="text/javascript">
        jQuery(document).ready(function() {
            jQuery('.excerpt_read-more').click(function(e) {
                e.preventDefault();

                var url = jQuery(this).attr('href');

                jQuery.get(url, function(data) {
                    var content = jQuery(data).find('#the_content').text();

                    jQuery(this).parent().fancybox({
                        'content' : content
                    });
                });
            });
        });
        </script>

这是我的代码,一切都可以正常工作到fancybox应该触发的部分。我把父方法放在一起,因为它通常会在.excerpt_read-more上触发一次,但是在任何情况下它都没有它。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您有一个范围/上下文问题。你不能在回调函数中重用this,因为那是一个全新的上下文。尝试将对元素的引用存储在单独的变量中,然后使用该变量。 E.g。

jQuery(document).ready(function() {
        jQuery('.excerpt_read-more').click(function(e) {
            e.preventDefault();

            var url = jQuery(this).attr('href');
            var $link = jQuery(this);  // <-- see this

            jQuery.get(url, function(data) {
                var content = jQuery(data).find('#the_content').text();

                $link.parent().fancybox({  // <-- and use it here
                    'content' : content
                });
            });
        });
    });