在页面加载时激活jQuery/Javascript函数
我试图在两个单独的表上运行javascript/jQuery函数,一旦它们加载完毕,我就尝试向HTML表中添加一个事件hadler在页面加载时激活jQuery/Javascript函数,javascript,jquery,Javascript,Jquery,我试图在两个单独的表上运行javascript/jQuery函数,一旦它们加载完毕,我就尝试向HTML表中添加一个事件hadler onload="filterItems();" 我也尝试过文档准备功能,我真的很困惑 $(document).ready(filterItems); 唯一有效的方法是click事件处理程序,它不适合我的情况 $('.filter-gift').click(filterItems); 我只希望该函数在页面加载时为每个表运行一次,请查看下面的JSFIDLE,因为您
onload="filterItems();"
我也尝试过文档准备功能,我真的很困惑
$(document).ready(filterItems);
唯一有效的方法是click事件处理程序,它不适合我的情况
$('.filter-gift').click(filterItems);
我只希望该函数在页面加载时为每个表运行一次,请查看下面的JSFIDLE,因为您可以看到有两个表利用了该函数
我希望它们中的每一个在页面加载时填充那里的过滤器,但是文档准备功能由于某些原因无法工作-我认为可能与有两个表有关
下面是javascript和jQuery im使用的代码:
$('.filter-gift').click(filterItems);
function filterItems(e) {
var items = [];
var table = '';
tableId = $(this).parent().parent().attr('tag')
var listItems = "";
listItems += "<option value='0'> -Select- </option>";
$('div[tag="' + tableId + '"] table.internalActivities .information').each(function (i) {
var itm = $(this)[0].innerText;
if ($.inArray(itm, items) == -1) {
items.push($(this)[0].innerText);
listItems += "<option value='" + i + "'>" + $(this)[0].innerText + "</option>";
}
});
$('div[tag="' + tableId+ '"] .filter-gift').html(listItems);
$('.filter-gift').change(function () {
var tableIdC = $(this).parent().parent().attr('tag');
var text = $('div[tag="' + tableIdC + '"] select option:selected')[0].text.replace(/(\r\n|\n|\r| |)/gm, "");;
$('div[tag="' + tableIdC + '"] .product-information-row').each(function (i) {
if ($(this).text().replace(/(\r\n|\n|\r| |)/gm, "") == text) {
$(this).show();
$(this).prev().show();
$(this).next().show();
}
else {
$(this).hide();
$(this).prev().hide();
$(this).next().hide();
}
});
});
}
$('.filter gift')。单击(filterItems);
函数过滤器项(e){
var项目=[];
var表=“”;
tableId=$(this.parent().parent().attr('tag'))
var listItems=“”;
listItems+=“-选择-”;
$('div[tag=“”+tableId+“]table.internalActivities.information')。每个(函数(i){
var itm=$(this)[0];
如果($.inArray(itm,项目)=-1){
items.push($(this)[0].innerText);
listItems+=“”+$(此)[0]。innerText+“”;
}
});
$('div[tag=“”+tableId+“].filter gift').html(listItems);
$('.filter gift').change(函数(){
var tableIdC=$(this.parent().parent().attr('tag');
var text=$('div[tag=“'+tableIdC+'”]选择选项:已选定“[0]。text.replace(/(\r\n |\n |)/gm,”);;
$('div[tag=“”+tableIdC+“].产品信息行)。每个(函数(i){
如果($(this).text().replace(/(\r\n |\n |\r | |)/gm,“”==text){
$(this.show();
$(this.prev().show();
$(this.next().show();
}
否则{
$(this.hide();
$(this.prev().hide();
$(this.next().hide();
}
});
});
}
谁能告诉我如何在每个表上运行函数,而不必在页面加载时与它交互。谢谢-我已经省略了我使用的其他脚本,以使它更清晰
谢谢如果没有附加进一步的要求,首先这是一项相当简单的任务
//jQuery document ready function to get Page Load
jQuery(document).ready(function(){ //Use a directly nested function
jQuery('.filter-gift').each(filterItems);
});
不幸的是,没有包含“filter gift”类的元素,因此我无法检查“.parent()”引用。如果没有附加进一步的要求,这是一项相当简单的任务
//jQuery document ready function to get Page Load
jQuery(document).ready(function(){ //Use a directly nested function
jQuery('.filter-gift').each(filterItems);
});
不幸的是,没有“filter gift”类的元素,因此我无法检查“.parent()”引用。我确实尝试过,但它不起作用。请在JSFIDLE中自己尝试一下。由于某些原因,它不起作用?onload事件只能附加到一组受限的html标记(表标记不是其中之一)。。。为什么不在body-load上执行脚本呢?我确实尝试过,但它不起作用。在JSFIDLE中尝试一下,因为某些原因它不起作用。onload事件只能附加到一组受限的html标记上(表标记不是其中之一)。。。你为什么不在身体负重的情况下执行脚本??