在不影响另一个页面的情况下更改一个页面的变量
Change a variable for one page without affecting another page
我有一个页面,使用一些javascript的一些瓷砖。在一页上,它工作得很好。它有6列的瓷砖,你可以点击每一个显示更多的信息。
我的问题是,我是使用相同的东西为另一个页面,但只有3列。当我将列变量更改为3时,它可以在新页面上工作,但原始页面也会发生变化。我需要保留第一页的6栏和新页的3栏。代码的方式是目前我只能有一个或另一个在第9行var per_row = 6
我怎么能使这个工作为两个页面而不破坏它?
var griddle_prep = function($el){
if(!$el.data('init')){
$el.addClass('griddle-initialized');
$el.data('init',$el.html());
}
};
var griddle_update = function($el){
var per_row = 6,
window_width = $(window).width();
// instead of calculating heights we're just going to piggyback breakpoints
// to determine how many items are in each row, see _griddle.scss
if(window_width<960){
per_row = 5;
}
if(window_width<768){
per_row = 4;
}
if(window_width<650){
per_row = 3;
}
if(window_width<530){
per_row = 2;
}
// proceed with updating the markup
if($el.data('init')) {
// wipe out the existing markup and use the stored 'template'
$el.html($el.data('init'));
// wrap each 'row' with a wrapper
var divs = $el.children(),
markup = '<div class="wrapper group griddle-row">',
i = 0;
divs.each(function(){
if(i>=per_row){
markup += '</div>';
markup += '<div class="wrapper group griddle-row">';
i = 0;
}
markup += $(this).wrap('<div>').parent().html();
i++;
});
markup += '</div>';
$el.html(markup);
}
};
var griddle_clean_up = function($el){
var $details = $el.find('.griddle-detail-display');
if($details.length){
$details.remove();
$el.find('.griddle-active').removeClass('griddle-active');
}
};
var griddle_position_indicator = function($el,$details){
var indicator_left = $el.offset().left + parseInt($el.outerWidth()/2,10);
$details.find('.griddle-indicator').css('left',indicator_left+'px');
};
var $griddles = $('.griddle');
if($griddles.length){
$('.griddle-details').hide();
// bind our details
$('body').on('click','.griddle-trigger',function(e){
e.preventDefault();
var $this = $(this),
$row = $this.parents('.griddle-row'),
target_row_index = $row.index(),
$griddle = $row.parents('.griddle'),
toggle = $(this).hasClass('griddle-active'),
$current_row = $griddle.find('.griddle-detail-display'),
$existing_details = $current_row,
current_row_index = $current_row.prev().index(),
$target_details = $this.parents('.griddle-item').find('.griddle-details').clone().show().removeAttr('id').addClass('griddle-detail-display').hide();
$griddle.find('.griddle-active').removeClass('griddle-active');
if(toggle){
$existing_details.slideUp('fast',function(){
$existing_details.remove();
});
}else{
// is a current row already displayed?
if(current_row_index>-1){
// check to see if we're just swapping out
if(target_row_index===current_row_index){
// just swap it out
$current_row.remove();
$row.after($target_details);
$target_details.show();
} else {
// remove the non-applicable row
$existing_details.slideUp('fast',function(){
$existing_details.remove();
});
// show the applicable row
$row.after($target_details);
$griddle.find('.griddle-detail-display').slideDown('fast');
}
} else {
// no current row, just slide it down
$row.after($target_details);
$griddle.find('.griddle-detail-display').slideDown('fast');
}
$this.addClass('griddle-active');
griddle_position_indicator($this,$target_details);
}
});
$griddles.each(function(){
var $griddle = $(this);
// going to grab the griddle HTML because we're going to be swapping it in and out when resizing
griddle_prep($griddle);
// init the rows
griddle_update($griddle);
// update the rows on resize
$(window).smartresize(function(){
griddle_clean_up($griddle);
griddle_update($griddle);
});
});
}
一种态度可能是在你的页面中包含这些信息,例如,在你的头部,使用META
标签:
<html>
<head>
<meta name="pageRows" content=3 />
</head>
<body>...</body>
</html>
另一个选项是使用body,或其中的任何其他元素:
<body ... pageRows=3> ...
,然后在JS中:
// Meta:
// Using jQuery:
var per_row = $('meta[name="pageRows"]').prop('content');
// Vanilla JS:
var per_row = document.getElementsByName("pageRows").getAttribute('content');
// Element:
// Using jQuery:
var per_row = $('body').prop('pageRows');
// Vanilla JS:
var per_row = document.getElementsByTagName("body").getAttribute('pageRows');
// Don't forget to specify a default, in case the `META` tag doesn't exist.
来源:
- MDN: HTML meta标签
- MDN: Javascript getElementsByName
- MDN: Javascript getementsbytagname
- MDN: Javascript getAttribute jQuery文档:.prop()
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 导航到特定事件的另一个变量页面
- 在另一个函数中使用变量this
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 为什么window.open不打开一个以变量形式给出的链接
- 将节点数据分配给另一个变量jstree
- 如何将变量传递到另一个js文件
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 将会话变量从一个页面传递到另一个页面
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 这在JavaScript中是一个好的变量名吗
- 可以't将sessionStorage设置为Javascript中的一个变量
- 如何在javascript中给变量一个随机值
- 在不同的.js文件之间传递变量;一个是在iframe内
- Console.log(变量);VS console.log([变量]);/一个提供信息,另一个没有
- 是否可以给变量一个默认值