无法让$(this)在JQuery中工作

时间:2012-12-20 04:23:55

标签: php jquery wordpress

嘿伙计们,所以我试图为wordpress中所有查询的帖子提供概述产品功能。 这是我的设置:

<?php $i = 0; $j = 1;?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); 
      $postid[$i] = get_the_ID();
      echo "<input type='hidden' value='".$postid[$i]."' id='hiddenpostitle".$j."' name='hiddenpostitle'/> ";
      echo "<input type='hidden' value='".$j."' id='hiddenpostnumfield'/> ";
?>
 <script type="text/javascript">
      $(function() {
           $('.item-post a').click(function() {
                 var num;
             $(this).num = $('#hiddenpostnumfield').val();
                 var prodname ;
             $(this).prodname = $('#hiddenpostitle' + num).val();

                 $.post('overviewcheck-515adfzx8522', { 
                      'ProdName': prodname
                 },
                 function( response ) {
                 },
                 'json'
            );
         });
         $('.item-post a').colorbox({
                 opacity:0.3, 
                 href:"../overviewa512454dzdtfa"
         });
    });
 </script>              
<?php 
         $i++;
     $j++;
    ?>
    <?php endwhile; endif; ?>

所以这将从wordpress获得一堆帖子并将它们粘贴到页面,然后JQuery代码根据从.item-post a

点击哪个帖子来获取指定的prodid

当我运行这个时,我得到了最后一篇文章,没有任何反应 - 例如1,2,3,4,5它总是会选择5。

如果这有意义,请告诉我,我认为我没有正确使用$(this)。但不确定,如果你能帮助我,我会很感激:)

更新:

<?php /*query_posts('test');uncategorized*/ $i = 0; $j = 1;?>
                <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <?php get_template_part( 'content', get_post_format() ); 
                    $postid[$i] = get_the_ID();
                    echo "<input type='hidden' value='".$postid[$i]."' id='hiddenpostitle".$j."' name='hiddenpostitle'/> ";
                    echo "<input type='hidden' value='".$j."' id='hiddenpostnumfield'/> ";
                ?>

                <?php 
                $i++;
                $j++;
                ?>
                <?php endwhile; endif; ?>
            <script type="text/javascript">
                                $(function()
                                {


                                   $('.item-post a').each("click" ,function(e) {
                                         $(this).click(function(e) {


                                        var num;
                                        num = $('#hiddenpostnumfield').val();
                                    var prodname ;
                                    prodname = $('#hiddenpostitle' + num).val();

                                       $.post('overviewcheck-515adfzx8522', 
                                        { 
                                            'ProdName': prodname

                                        },
                                        function(response) {
                                        },
                                        'json'
                                    );
                                    });
                                   });
                                    $('.item-post a').colorbox({opacity:0.3, href:"../overviewa512454dzdtfa"});
                                });

                            </script>   

我收到错误消息称点击没有方法'apply'

好的,所以Wordpress查询帖子 -

<?php /*query_posts('test');uncategorized*/ $i = 0; $j = 1;?>
                    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                    <?php get_template_part( 'content', get_post_format() ); 
                        $postid[$i] = get_the_ID();
                        echo "<input type='hidden' value='".$postid[$i]."' id='hiddenpostitle".$j."' name='hiddenpostitle'/> ";
                        echo "<input type='hidden' value='".$j."' id='hiddenpostnumfield'/> ";
                    ?>

                    <?php 
                    $i++;
                    $j++;
                    ?>
                    <?php endwhile; endif; ?>

这会创建一个输入字段 - 其中2个隐藏的字段具有递增值,因此hiddenpostitle1,hiddenpostitle2等...而hiddenpostnumfield值将增加1,2,3等。随帖发布。比JQuery代码将选择哪个图像(图像-pos a),而不是基于传递的数据发送到创建会话的文件,并且颜色框以概览外观打开它。

我的问题:

我无法根据他们选择的产品获得正确的数据。无论什么,总是最后一个帖子放在网站上。

好的,现在我们到了某个地方!!!

查看实际操作请访问prodjsoundlighting.com - 然后点击图片,但仍然有问题但不确定原因。

这里是更新的代码:

<?php /*query_posts('test');uncategorized*/ $i = 0; $j = 1;?>
                <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <?php get_template_part( 'content', get_post_format() ); 
                    $postid[$i] = get_the_ID();
                    echo "<input type='hidden' value='".$postid[$i]."' id='hiddenpostitle".$j."' name='hiddenpostitle'/> ";
                    echo "<input type='hidden' value='".$j."' id='hiddenpostnumfield".$j."'/> ";
                ?>

                <?php 
                $i++;
                $j++;
                ?>
                <?php endwhile; endif; ?>
                <script type="text/javascript">
                                $(function()
                                {


                                   $('.item-post a').each(function(i) {
                                         $(this).on("click", function(e) {


                                        var num;
                                        num = $('#hiddenpostnumfield' +(i+1)).val();
                                    var prodname ;
                                    prodname = $('#hiddenpostitle' + (i+1)).val();

                                       $.post('overviewcheck-515adfzx8522', 
                                        { 
                                            'ProdName': prodname

                                        },
                                        function(response) {
                                        },
                                        'json'
                                    );
                                    });
                                   });
                                    $('.item-post a').colorbox({opacity:0.3, href:"../overviewa512454dzdtfa"});
                                });

                            </script>   

So now it is putting up, but it is taking like 3 above what it is suppose...best way is to see it so check it out and let me know.

1 个答案:

答案 0 :(得分:0)

您错误地使用了$(this)$(this)指向触发该功能的元素,因此在您的情况下点击了$('.item-post a')

此外,与$(this)无关,您的代码会在循环中运行,但会使用相同的id - hiddenpostnumfield创建大量输入。 id在页面中应该是唯一的。