Div 使用 jquery 不显示
Div not displaying using jquery
我有下面的内容,应该根据单击的图像 link 更改 div。
我希望英国内容在页面加载时自动显示,然后它提供了更改 div 以通过单击标志图像显示不同内容(语言)的选项。
这在 jsFiddle 和 CodePen 中有效,但在我的网站上无效,即使使用完全相同的代码也是如此。每当我单击伊朗徽标时,它都不会加载内容。
有什么建议吗?
$(document).ready(function() {
$('#wayfindermenu a').click(function(e) {
hideContentDivs();
var tmp_div = $(this).parent().index();
$('.maincontent div').eq(tmp_div).show();
});
function hideContentDivs() {
$('.maincontent div').each(function() {
$(this).hide();
});
}
hideContentDivs();
$('.maincontent div').eq(0).show();
});
$(function() {
$('#wayfindermenu li a').on('click', function() {
$(this).parent().addClass('active').siblings().removeClass('active');
});
});
出于某种原因,代码 $('.maincontent div').eq(1);
带回了您的国旗图像,而不是您的伊朗内容。
(div class="image right" style="display: block;"><img src="https://www.herts.ac.uk/__data/assets/image/0008/24983/Iran.jpg" alt="Flag of Kuwait"></div>
)
改为尝试此实现 - 针对内容的特定 class 而不是使用索引:
使用 data
标签属性 link 哪个标志 link 对应哪个页面 ID,然后定位特定的 div
内容并显示它。
此外,英国不会在您的页面中显示为默认值,因为您的页面代码中没有 $('.maincontent div').eq(0).show();
,但它在您的 fiddle 中。您还可以像我在下面所做的那样定位特定的英国 div $('page1').show();
$(document).ready(function() {
hideContentDivs();
$('#page1').show();
$('#wayfindermenu a').click(function(e){
hideContentDivs();
var target = $(this).data('page'); // gets the data-page attribute
$('#' + target).show(); // shows the page
});
function hideContentDivs(){
$('.maincontent div').hide();
}
});
li {
display:inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="wayfindermenu">
<li id="link1" class="">
<a href="#!" data-page="page1">
<img src="https://www.herts.ac.uk/__data/assets/image/0005/104909/english.svg.png" alt="Britain flag logo" id="itemImg"/>
</a>
</li>
<li id="link2" class="active">
<a href="#!" data-page="page2">
<img src="https://www.herts.ac.uk/__data/assets/image/0020/104906/Flag_of_Iran.svg.png" alt="Iran flag logo" id="itemImg"/>
</a>
</li>
</ul>
<div class="maincontent">
<div id="page1">british content</div>
<div id="page2">iran content</div>
</div>
我有下面的内容,应该根据单击的图像 link 更改 div。
我希望英国内容在页面加载时自动显示,然后它提供了更改 div 以通过单击标志图像显示不同内容(语言)的选项。
这在 jsFiddle 和 CodePen 中有效,但在我的网站上无效,即使使用完全相同的代码也是如此。每当我单击伊朗徽标时,它都不会加载内容。
有什么建议吗?
$(document).ready(function() {
$('#wayfindermenu a').click(function(e) {
hideContentDivs();
var tmp_div = $(this).parent().index();
$('.maincontent div').eq(tmp_div).show();
});
function hideContentDivs() {
$('.maincontent div').each(function() {
$(this).hide();
});
}
hideContentDivs();
$('.maincontent div').eq(0).show();
});
$(function() {
$('#wayfindermenu li a').on('click', function() {
$(this).parent().addClass('active').siblings().removeClass('active');
});
});
出于某种原因,代码 $('.maincontent div').eq(1);
带回了您的国旗图像,而不是您的伊朗内容。
(div class="image right" style="display: block;"><img src="https://www.herts.ac.uk/__data/assets/image/0008/24983/Iran.jpg" alt="Flag of Kuwait"></div>
)
改为尝试此实现 - 针对内容的特定 class 而不是使用索引:
使用 data
标签属性 link 哪个标志 link 对应哪个页面 ID,然后定位特定的 div
内容并显示它。
此外,英国不会在您的页面中显示为默认值,因为您的页面代码中没有 $('.maincontent div').eq(0).show();
,但它在您的 fiddle 中。您还可以像我在下面所做的那样定位特定的英国 div $('page1').show();
$(document).ready(function() {
hideContentDivs();
$('#page1').show();
$('#wayfindermenu a').click(function(e){
hideContentDivs();
var target = $(this).data('page'); // gets the data-page attribute
$('#' + target).show(); // shows the page
});
function hideContentDivs(){
$('.maincontent div').hide();
}
});
li {
display:inline-block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="wayfindermenu">
<li id="link1" class="">
<a href="#!" data-page="page1">
<img src="https://www.herts.ac.uk/__data/assets/image/0005/104909/english.svg.png" alt="Britain flag logo" id="itemImg"/>
</a>
</li>
<li id="link2" class="active">
<a href="#!" data-page="page2">
<img src="https://www.herts.ac.uk/__data/assets/image/0020/104906/Flag_of_Iran.svg.png" alt="Iran flag logo" id="itemImg"/>
</a>
</li>
</ul>
<div class="maincontent">
<div id="page1">british content</div>
<div id="page2">iran content</div>
</div>