使用jQuery侦听器向媒体上传器添加字段

时间:2015-07-16 作者:rugbert

因此,我有代码可以成功地将一个选择字段添加到我的媒体上传器(gallery view),这很酷,但我还需要向该字段添加一些jquery侦听器。

我正在使用“print\\u media\\u templates”挂钩添加我的标记和js,我想向select字段添加一个jQuery侦听器,.js--gallery-style, 这将使用show或其他选项切换另一个字段:

function add_gallery_type_option(){


  ?>
  <script type="text/html" id="tmpl-my-custom-gallery-setting">
    <label class="setting">
      <span><?php _e(\'Gallery Style\'); ?></span>
      <select class="js--gallery-style" data-setting="gallery_style">
        <option value="default"> Grid (default) </option>
        <option value="slider"> Slider </option>
      </select>
    </label>
  </script>

  <script>

    jQuery(document).ready(function(){


      _.extend(wp.media.gallery.defaults, {
        my_custom_attr: \'default_val\'
      });

      // merge default gallery settings template with yours
      wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({
        template: function(view){
          return wp.media.template(\'gallery-settings\')(view)
               + wp.media.template(\'my-custom-gallery-setting\')(view);
        }
      });

    });

  </script>
  <?php
}
add_action(\'print_media_templates\', \'add_gallery_type_option\');
我相信这很容易,但我还没有学会脊梁骨。js,所以我不知道从哪里开始寻找。

1 个回复
最合适的回答,由SO网友:Kalimah 整理而成

从…起Blackbone.js 网站:

render是视图应该覆盖的核心函数,以便用适当的HTML填充其元素(this.el)。约定是渲染始终返回此值。

因此,我对代码进行了一些修改,添加了jQuery更改侦听器。

function add_gallery_type_option(){
  ?>
  <script type="text/html" id="tmpl-my-custom-gallery-setting">
    <label class="setting">
      <span><?php _e(\'Gallery Style\'); ?></span>
      <select class="js--gallery-style" data-setting="gallery_style">
        <option value="default"> Grid (default) </option>
        <option value="slider"> Slider </option>
      </select>
    </label>
  </script>

  <script>

    jQuery(document).ready(function(){
      _.extend(wp.media.gallery.defaults, {
        my_custom_attr: \'default_val\'
      });

      // merge default gallery settings template with yours
      wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({
        template: function(view){
          return wp.media.template(\'gallery-settings\')(view)
               + wp.media.template(\'my-custom-gallery-setting\')(view);
        },
        render: function() {
                wp.media.View.prototype.render.apply( this, arguments );

                jQuery(this.$(\'.js--gallery-style\')).change(function(e)
                  {
                      alert(jQuery(this).val());
                  })
                return this;
            }
      });

    });

  </script>
  <?php
}
add_action(\'print_media_templates\', \'add_gallery_type_option\');

结束

相关推荐

WordPress在jQuery中调用POST-ID

我在这里解释我的情况:在我的主页上,我有一个正在显示的帖子列表。我有一个类似模式框的代码来分享这篇文章。基本上,每个帖子上都有一个按钮共享。单击后,将显示一个框,其中包含指向FB、twitter等的共享链接。如下所示:http://www.joe.ie/ (包括出现的Fadein背景)。问题是,它没有显示好的帖子共享。。。但他们都是。我的意思是,当我点击A帖的共享按钮时,它应该会显示A帖的标题。现在,我点击了帖子A、B或C的共享按钮。它显示了与所有帖子“A”、“B”、“C”等相关的框。为了解决这个问题,我