Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找项目的最后一个类,并根据单击的项目发布数据_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript 查找项目的最后一个类,并根据单击的项目发布数据

Javascript 查找项目的最后一个类,并根据单击的项目发布数据,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我的主页上有三个块元素,每个块元素代表一项服务。当我单击一个块时,一个div幻灯片打开,其中包含选项卡,这些选项卡表示所单击服务块的子服务 单击块时,我希望它仅显示所单击的serviceblock的子服务 我的想法是在块上使用与数据库中别名字段相同的类名(使用此字段我可以获得所有数据,它基本上是没有空格和引号的标题)。通过这种方式,我可以将带有ajax的类名发布到我的查询中,并且只检索单击的块的数据,而不是一次检索所有数据 但问题是,我有多个类,如何告诉jquery要获取哪个类?或者我可以找一个

我的主页上有三个块元素,每个块元素代表一项服务。当我单击一个块时,一个div幻灯片打开,其中包含选项卡,这些选项卡表示所单击服务块的子服务

单击块时,我希望它仅显示所单击的serviceblock的子服务

我的想法是在块上使用与数据库中别名字段相同的类名(使用此字段我可以获得所有数据,它基本上是没有空格和引号的标题)。通过这种方式,我可以将带有ajax的类名发布到我的查询中,并且只检索单击的块的数据,而不是一次检索所有数据

但问题是,我有多个类,如何告诉jquery要获取哪个类?或者我可以找一个吗?如何将其正确地发布到我的php脚本中

我会展示我所得到的,也许这样更容易理解:

(我的街区,请注意每个分区的最后一个类:haven、openbaar、landmeten)

以及我的php脚本,其中必须将与服务的别名(数据库中标题的其他名称)相同的名称发布到。我已经在我的查询中添加了名为
dienstnaam

<?
session_start();

class Connection {
    // Configure Database Vars
    private $host     = 'removed';
    private $username = 'removed';
    private $password = 'removed';
    private $db_name  = 'removed';
    public $db;

    function __construct() {
        // Create connection
        $db = new mysqli($this->host, $this->username, $this->password, $this->db_name);

        // Check connection
        if ($db->connect_errno > 0) {
            die('Unable to connect to the database: '.$db->connect_error);
        }

        $this->db = $db;
    }

    public function query($query) {
        $db = $this->db;
        $this->db->query('SET NAMES utf8');
        if (!$result = $this->db->query($query)) {
            die('There was an error running the query ['.$db->error.']');
        } else {
            return $result;
        }
    }

    public function multi_query($query) {
        $db = $this->db;
        if (!$result = $this->db->multi_query($query)) {
            die('There was an error running the multi query ['.$db->error.']');
        } else {
            return $result;
        }

    }

    public function real_escape_string($value) {
        return $this->db->real_escape_string($value);
    }

    public function inserted_id() {
        return $this->db->insert_id;
    }
}

$conn = new Connection;

?>

<div class="vk-what-we-do-section vk-section vk-section-style-2 vk-section-style-3 tabwrapper">
    <div class="container">
        <h2 class="vk-heading vk-heading-border vk-heading-border-left">
          <?
          //  Haal de categorienaam op
          $level1               = "SELECT * FROM `snm_categories` WHERE alias  = '".$_POST['dienstnaam']."'";
          $levelcon1              = $conn->query($level1);
          $levelcr1             = array();
          while ($levelcr1[]    = $levelcon1->fetch_array());

          //  Haal alle artikelen op bij de bovenstaande categorie
          $level2               = "SELECT * FROM `snm_content` WHERE catid  = '".$conn->real_escape_string($levelcr1[0]['id'])."'";
          $levelcon2              = $conn->query($level2);
          $levelcr2             = array();
          while ($levelcr2[]    = $levelcon2->fetch_array());
          ?>
      <span>
        <span class="vk-text-color-yellow-1">Onze</span> expertise
      </span>
        </h2>
        <nav class="box-filter text-center clearfix">
            <ul class="vk-filter vk-filter-button-fix hidden-xs hidden-sm">
                <?
                foreach($levelcr2 as $topnamen){
                  if($topnamen['id'] != ''){
                    $namenoverzicht .= '<li class="data-filter" data-filter=".'.$topnamen['alias'].'">'.$topnamen['title'].'</li>';
                  }
                }
                echo $namenoverzicht;
                ?>
            </ul>

            <select class="vk-filter vk-filter-button-fix form-control hidden-md hidden-lg" id="dropdown-filter">
              <?
              foreach($levelcr2 as $options){
                $optionlist .= '<option class="data-filter" value=".'.$options['alias'].'">'.$options['title'].'</option>';
              }
              echo $optionlist;
              ?>
            </select>
        </nav>

        <div class="row vk-filter-fix">
          <?
          $o = 1;
          foreach($levelcr2 as $tabdata){
            if($o == 1){
              $first = 'first';
            }else{
              $first = '';
            }
            $tabitem .= '
            <div class="item '.$first.' '.$tabdata['alias'].'">
                <div class="col-md-6 left">

                    <div class="vk-img-frame">
                        <img src="images/services/image-7.jpg" alt=""/>
                    </div>
                </div>

                <div class="col-md-6 right">
                    <div class="content">
                        <h4 class="text-uppercase vk-title">'.$tabdata['title'].'</h4>
                        '.$tabdata['introtext'].'
                    </div>
                    <div class="vk-buttons">
                        <div class="vk-counter vk-counter-non-icon">
                        </div>
                        <a href="'.$tabdata['alias'].'.html" class="vk-btn vk-btn-transparent text-uppercase">MEER INFORMATIE
                            <i class="fa fa-arrow-right"></i>
                        </a>
                    </div>
                </div>
            </div>';
            $o++;
          }
          echo $tabitem;
          ?>
        </div>
    </div>
</div>
我在评论中提到的上一个ajax脚本:

(function(){
/*
Meer websites laden
*/
  if(document.getElementById('loadnews') !== null) {
    var limit = 9;
    var offset = 0;
    var i =0;
    $('#loadmore').click(function() {
      limit = 3;
        if(i == 0) {
            offset += 9;
        } else {
            offset += 3;
        }
        i++;
      ajax();
    });

    var posts = document.getElementById('loadnews');

    function ajax() {
        $.ajax({
        url: 'includes/loadmore.php',
        type: "POST",
        data: {limit: limit, offset: offset},
        success: function(data){
          var newWrapper = document.createElement('div')
            //add class to newWrapper or whatever
            newWrapper.innerHTML=data;
            loadnews.appendChild(newWrapper);
          setTimeout(function() {
            $("#portfolio-gallery").lightGallery({
              galleryId: 2,
              selector: '.post-image'
            });
          }, 300);
        },
        error: function(jqXHR, exception) {
                  if (jqXHR.status === 0) {
                       alert('Not connect.\n Verify Network.');
                   } else if (jqXHR.status == 404) {
                       alert('Requested page not found. [404]');
                   } else if (jqXHR.status == 500) {
                       alert('Internal Server Error [500].');
                   } else if (exception === 'parsererror') {
                       alert('Requested JSON parse failed.');
                   } else if (exception === 'timeout') {
                       alert('Time out error.');
                   } else if (exception === 'abort') {
                       alert('Ajax request aborted.');
                   } else {
                       alert('Uncaught Error.\n' + jqXHR.responseText);
                   }
               }
        });
    }

    ajax();
  }
}());

如果我正确理解了问题,这应该是可行的:

$('.handmouse').click(function(e){
    $(this).children('.tabwrapper').slideToggle();
    $('html, body').animate({
        scrollTop: $(this).children(".tabwrapper").offset().top
    }, 2000);
});
$('.handmouse').click(function(e){
    $(this).find('.tabwrapper').slideToggle();
    $('html, body').animate({
        scrollTop: $(this).find(".tabwrapper").offset().top
    }, 2000);
});
EDIT:如果
tabwrapper
不是
handmouse
的直系后代,则应执行以下操作:

$('.handmouse').click(function(e){
    $(this).children('.tabwrapper').slideToggle();
    $('html, body').animate({
        scrollTop: $(this).children(".tabwrapper").offset().top
    }, 2000);
});
$('.handmouse').click(function(e){
    $(this).find('.tabwrapper').slideToggle();
    $('html, body').animate({
        scrollTop: $(this).find(".tabwrapper").offset().top
    }, 2000);
});
编辑:由于问题比应该的复杂得多,上述代码不相关。我最后一次了解到底需要什么是:

$('.handmouse').click(function(e){
    var classList = $(this).className.split(/\s+/);
    var alias = classList[classList.length]; // This is the... "alias"?... of the element that was clicked.
    // Fetch data using the alias into a 'data' variable
    $('.tabwrapper').slideToggle();
    $('.tabwrapper').text(data); // Put the hypothetical data into the tabwrapper.
    $('html, body').animate({
        scrollTop: $(".tabwrapper").offset().top
    }, 2000);
});

tabwrapper元素在哪里?它是我的连接类下phpscript中的顶部div。好的,你能按原样显示输出html吗(查看页面的源代码并复制它)-需要查看与标题相关的结构将其添加到我的问题@Pete,我在查询中硬编码了别名,否则没有任何数据。而不是使用类,使用数据属性,则只需将其绑定到一个公共类,而不必将其单独绑定到不同的类。这将打开div,无论单击哪个类。我想根据单击的div发布不同的名称,然后用它检索正确的数据。你怎么知道tabwrapper是handmouse div的直接子项?@Pete谢谢,我添加了另一个选项,可以处理间接子项,虽然我很难理解它与发布和检索数据有什么关系。哈哈哈,看起来它根本不是一个孩子!From OP comments似乎只是页面上某个地方的一个div,当他们进行幻灯片切换时,他们希望加载数据-真的很糟糕question@Pete现在看起来怎么样?
$('.handmouse').click(function(e){
    var classList = $(this).className.split(/\s+/);
    var alias = classList[classList.length]; // This is the... "alias"?... of the element that was clicked.
    // Fetch data using the alias into a 'data' variable
    $('.tabwrapper').slideToggle();
    $('.tabwrapper').text(data); // Put the hypothetical data into the tabwrapper.
    $('html, body').animate({
        scrollTop: $(".tabwrapper").offset().top
    }, 2000);
});