Javascript 查找项目的最后一个类,并根据单击的项目发布数据
我的主页上有三个块元素,每个块元素代表一项服务。当我单击一个块时,一个div幻灯片打开,其中包含选项卡,这些选项卡表示所单击服务块的子服务 单击块时,我希望它仅显示所单击的serviceblock的子服务 我的想法是在块上使用与数据库中别名字段相同的类名(使用此字段我可以获得所有数据,它基本上是没有空格和引号的标题)。通过这种方式,我可以将带有ajax的类名发布到我的查询中,并且只检索单击的块的数据,而不是一次检索所有数据 但问题是,我有多个类,如何告诉jquery要获取哪个类?或者我可以找一个吗?如何将其正确地发布到我的php脚本中 我会展示我所得到的,也许这样更容易理解: (我的街区,请注意每个分区的最后一个类:haven、openbaar、landmeten) 以及我的php脚本,其中必须将与服务的别名(数据库中标题的其他名称)相同的名称发布到。我已经在我的查询中添加了名为Javascript 查找项目的最后一个类,并根据单击的项目发布数据,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我的主页上有三个块元素,每个块元素代表一项服务。当我单击一个块时,一个div幻灯片打开,其中包含选项卡,这些选项卡表示所单击服务块的子服务 单击块时,我希望它仅显示所单击的serviceblock的子服务 我的想法是在块上使用与数据库中别名字段相同的类名(使用此字段我可以获得所有数据,它基本上是没有空格和引号的标题)。通过这种方式,我可以将带有ajax的类名发布到我的查询中,并且只检索单击的块的数据,而不是一次检索所有数据 但问题是,我有多个类,如何告诉jquery要获取哪个类?或者我可以找一个
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);
});