如何获取被点击项目的标题

时间:2014-04-02 作者:Tim

情景:

我为活动创建了一个自定义帖子类型,访客可以通过表单注册。单击“出席”按钮时,表格会在模式内部弹出。如您所见,我使用了一个带有get\\u title()函数的隐藏输入字段与表单一起发送,这样我就知道用户正在参加什么活动。此代码已添加到此帖子中。

问题

我在页面上显示了4个事件。此代码总是回显一个事件的标题,而不是单击的事件的标题。例如:如果我单击event1,则echo是event3的标题;如果我单击event2,则echo也是event3的标题。

问题

如何获取get_title() 函数或其他函数来响应所单击事件的标题?

<div class="col-md-6">
  <?php
  query_posts(\'post_type=agenda&order=DESC&posts_per_page=2\');
  if ( have_posts() ) : while ( have_posts() ) : the_post();
  ?>
  <div class="event-left">
    <a class="cta-button" data-toggle="modal" data-target="#myModal">
      <i class="fa fa-chevron-right fa-lg"></i>
      <?php the_post_thumbnail(\'agenda-img\', array(\'class\' => \'fit\')); ?>
    </a>
    <div class="event-date">
      <h1><?php echo get_post_meta($post->ID, "_date", true); ?></h1>
        <p class="month"><?php echo get_post_meta($post->ID, "_month", true); ?></p>
      <p class="location"><?php echo get_post_meta($post->ID, "_location", true); ?></p>
    </div>
    <div class="event-name"><p><?php the_title() ?></p></div>
    <div class="event-text"><?php the_content(); ?></div>
  </div>
  <?php endwhile; endif; ?>  
</div><!-- /col-->
  
<div class="col-md-6">
  <?php
  query_posts(\'post_type=agenda&order=DESC&posts_per_page=2&offset=2\');
  if (have_posts()) : while (have_posts()) : the_post();
  ?>
  <div class="event-right">
    <a class="cta-button" data-toggle="modal" data-target="#myModal">
      <i class="fa fa-chevron-right fa-lg"></i>
      <?php the_post_thumbnail(\'agenda-img\', array(\'class\' => \'fit\')); ?>
    </a>
    <div class="event-date">
      <h1><?php echo get_post_meta($post->ID, "_date", true); ?></h1>
      <p class="month"><?php echo get_post_meta($post->ID, "_month", true); ?></p>
      <p class="location"><?php echo get_post_meta($post->ID, "_location", true); ?></p>
    </div>
    <div class="event-name"><p><?php the_title() ?></p></div>
    <div class="event-text"><?php the_content(); ?></div>
  </div>
  <?php endwhile; endif; ?>  
  
  <!-- Modal -->
  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Attend</h4>
      </div>
      <div class="modal-body">
       <p>Call to action text</p>
       <form role="form-horizontal" id="eventform">
         <div class="form-group">
           <input type="hidden" class="form-control" id="text" value="<?php the_title() ?>" name="text">
         </div>
         <div class="form-group">
           <input type="email" class="form-control" id="email" name="email" placeholder="E-mailadres">
         </div>
         <button type="submit" id="eventform" class="btn btn-primary btn-lg">Send</button>
       </form>
       </div>
       <div class="modal-footer">
         <p>Company name</p>
       </div>
      </div>
    </div>
  </div>     
</div><!-- /col-->

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

好吧,如果您打算收集一篇文章的标题并将其插入一个隐藏字段,那么您可以使用Javascript轻松获取信息。我喜欢使用jQuery,因此您可以做以下几件事:

1) 将标题放入要用户单击的元素的数据属性中。

<div class="event-name">
     <p data-title="<?php the_title() ;?>"><?php the_title() ;?></p>
</div>
2)现在将click事件添加到元素:

<script>

jQuery(document).ready(function() { 
    (function ($) { 

        $(\'.event-name p\').on( \'click\', function(){
            var title = this.getAttribute(\'data-title\');
            $(\'#text.form-control\').val(title);
        });

    })(jQuery);
});

</script>
3)如果您需要在允许用户点击“发送”按钮之前强制用户单击标题,我可以为您提供一个快速片段;只需在评论中作出回应。

结束