Jquery,有什么想法如何不重复这里的代码?
Jquery, any thoughts how to not repeat the code here?
我用它来使菜单适用于我的画廊。 .masonry # 在 display:none 上,这样我可以使用菜单中的 ID 在单击时显示相应的画廊。
很多代码是重复的。希望有人有一个很好的解决方案来消除重复。如果可以的话。
$(function() {
$( "#vakantie" ).click(function() {
$(".masonry").hide(400)
$( "#travel" ).show( "fade", 1250 );
});
$( "#mensen" ).click(function() {
$(".masonry").hide(400)
$( "#people" ).show( "fade", 1250 );
});
$( "#dieren" ).click(function() {
$(".masonry").hide(400)
$( "#animal" ).show( "fade", 1250 );
});
$( "#bloemen" ).click(function() {
$(".masonry").hide(400)
$( "#corso" ).show( "fade", 1250 );
});
$( "#event" ).click(function() {
$(".masonry").hide(400)
$( "#eventGallery" ).show( "fade", 1250 );
});
});
也可以稍微更改您的 ID 的名称,以特定前缀开头(id='xx_bloemen'、id='xx_mensen'、id='xx_dieren',等等在)。
然后在你的代码中:
$('div[id^="xx_"]').click(function() {
$(".masonry").hide(400);
});
它将用于每个 ID 以 'xx_' 开头的 div。
您可能需要在此示例中的某处添加一些额外的引号(我已经记下了),但我希望您能理解。
为所有按钮创建一个通用的class
,例如'my-button'
$('body').on('click','.my-button',function(){
// .. then check the id
var id = $(this).attr('id');
$(".masonry").hide(400);
//..apply condition
if(id == 'vakantie'){
$('#travel').show( "fade", 1250 );
}else if(id == 'mensen'){
$('#people').show( "fade", 1250 );
}
//..etc so on.
});
$(function() {
var $vakantie = $('#vakantie'),
$mensen = $('#mensen'),
$dieren = $('#dieren'),
$bloemen = $('#bloemen'),
$masonry = $('.masonry'),
$travel = $('#travel');
function handleClick() {
$masonry.hide(400)
$trave.show('fade', 1250 );
}
Array.prototype.forEach.call([$akantie, $mensen, $dieren, $bloemen],
function (node) {
$(node).on('click', handleClick);
}
);
});
或者像 js-fade-in-out
一样创建一个 class 并将一个事件绑定到这个 class。
基本上,如果每个元素都相同,您希望传递一个事件处理程序。
简单、简短且有效。您只需指定您的菜单。
$(function() {
var menu = [
['vakantie', 'travel'],
['mensen', 'people']
];
menu.forEach(function(element) {
$( "#"+element[0] ).click(function() {
$(".masonry").hide(400);
$( "#"+element[1] ).show( "fade", 1250 );
});
});
});
您可以将 data-
属性用于 link 按钮和内容。单击一个按钮,读取它的数据-(例如数据-link),然后在数据-link 中找到元素并显示它。
这样做的好处是,当您 add/remove buttons/panels 并且不依赖于解析 ID 时,您的代码不需要更改。
$(".link").click(function() {
var panel = $(this).data("link");
//console.log(panel)
$(".panel").hide(function() {
$("div[data-link='" + panel + "']").fadeIn(1250);
});
});
.panel {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class='link' data-link='travel'>vakentie</button>
<button class='link' data-link='people'>mensen</button>
<div class='panel' data-link='travel'>Travel</div>
<div class='panel' data-link='people'>People</div>
我用它来使菜单适用于我的画廊。 .masonry # 在 display:none 上,这样我可以使用菜单中的 ID 在单击时显示相应的画廊。 很多代码是重复的。希望有人有一个很好的解决方案来消除重复。如果可以的话。
$(function() {
$( "#vakantie" ).click(function() {
$(".masonry").hide(400)
$( "#travel" ).show( "fade", 1250 );
});
$( "#mensen" ).click(function() {
$(".masonry").hide(400)
$( "#people" ).show( "fade", 1250 );
});
$( "#dieren" ).click(function() {
$(".masonry").hide(400)
$( "#animal" ).show( "fade", 1250 );
});
$( "#bloemen" ).click(function() {
$(".masonry").hide(400)
$( "#corso" ).show( "fade", 1250 );
});
$( "#event" ).click(function() {
$(".masonry").hide(400)
$( "#eventGallery" ).show( "fade", 1250 );
});
});
也可以稍微更改您的 ID 的名称,以特定前缀开头(id='xx_bloemen'、id='xx_mensen'、id='xx_dieren',等等在)。 然后在你的代码中:
$('div[id^="xx_"]').click(function() {
$(".masonry").hide(400);
});
它将用于每个 ID 以 'xx_' 开头的 div。 您可能需要在此示例中的某处添加一些额外的引号(我已经记下了),但我希望您能理解。
为所有按钮创建一个通用的class
,例如'my-button'
$('body').on('click','.my-button',function(){
// .. then check the id
var id = $(this).attr('id');
$(".masonry").hide(400);
//..apply condition
if(id == 'vakantie'){
$('#travel').show( "fade", 1250 );
}else if(id == 'mensen'){
$('#people').show( "fade", 1250 );
}
//..etc so on.
});
$(function() {
var $vakantie = $('#vakantie'),
$mensen = $('#mensen'),
$dieren = $('#dieren'),
$bloemen = $('#bloemen'),
$masonry = $('.masonry'),
$travel = $('#travel');
function handleClick() {
$masonry.hide(400)
$trave.show('fade', 1250 );
}
Array.prototype.forEach.call([$akantie, $mensen, $dieren, $bloemen],
function (node) {
$(node).on('click', handleClick);
}
);
});
或者像 js-fade-in-out
一样创建一个 class 并将一个事件绑定到这个 class。
基本上,如果每个元素都相同,您希望传递一个事件处理程序。
简单、简短且有效。您只需指定您的菜单。
$(function() {
var menu = [
['vakantie', 'travel'],
['mensen', 'people']
];
menu.forEach(function(element) {
$( "#"+element[0] ).click(function() {
$(".masonry").hide(400);
$( "#"+element[1] ).show( "fade", 1250 );
});
});
});
您可以将 data-
属性用于 link 按钮和内容。单击一个按钮,读取它的数据-(例如数据-link),然后在数据-link 中找到元素并显示它。
这样做的好处是,当您 add/remove buttons/panels 并且不依赖于解析 ID 时,您的代码不需要更改。
$(".link").click(function() {
var panel = $(this).data("link");
//console.log(panel)
$(".panel").hide(function() {
$("div[data-link='" + panel + "']").fadeIn(1250);
});
});
.panel {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class='link' data-link='travel'>vakentie</button>
<button class='link' data-link='people'>mensen</button>
<div class='panel' data-link='travel'>Travel</div>
<div class='panel' data-link='people'>People</div>