1

我想在我的 WordPress 博客上使用此代码,但它不起作用:

  (function ($) {
    $.fn.extend({
      raw: function (options) {
        this.defaultOptions = {
          className: 'raw-link',
          eventBased: true
        };
        var settings = $.extend({}, this.defaultOptions, options);
        return this.each(function () {
          var $this = $(this),
            data = 'data:;base64,' + unescape(btoa($this.text()));
          if (settings.eventBased) {
            $link = $('<a href="#" class="' + settings.className + '">Raw</a>');
            $this.after($link);
            $link.on('click', function (e) {
              e.preventDefault();
              window.open(data);
            });
          } else {
            $this.after('<a href="' + data + '" target="_blank" class="' +
                          settings.className + '">Raw</a>');
          }
        });
      }
    });
  })(jQuery);
  jQuery(document).ready(function () {
    $('pre').raw();
  });

它的作用是在pre选定元素后附加一个链接,单击该链接时,将在新窗口中打开此类 pre 的原始代码。

我通过将代码添加到我现有的 JavaScript 文件、在header.php文件中以及创建一个新的 JS 文件来尝试它,但仍然没有工作。

代码是正确的,我在jsFiddle上测试过。只是不能在 WordPress 中工作。

谁能帮我解决这个问题?

4

1 回答 1

1

Wordpress 通常以 noConflict 模式加载 jQuery,$ 在这种情况下无法通过简写访问 jQuery。

改变这个:

jQuery(document).ready(function () {
    $('pre').raw();
  });

jQuery(document).ready(function () {
    jQuery('pre').raw();
  });

或者

jQuery(document).ready(function ($) {
    $('pre').raw();
  });
于 2012-12-31T08:30:04.663 回答