我正在尝试在加载后在两个单独的表上运行javascript / jQuery函数,我尝试在表HTML中添加事件hadler。
onload="filterItems();"
我也尝试过文档就绪功能我真的很困惑。
$(document).ready(filterItems);
唯一可行的方法是单击事件处理程序,这对我的情况并不理想。
$('.filter-gift').click(filterItems);
我只想在页面加载时为每个表运行一次函数,请查看下面的jsfiddle https://jsfiddle.net/51Le6o06/41/,因为你可以看到有两个表利用了这个函数。
我希望他们每个人都在页面加载时填充过滤器,但文档就绪函数由于某种原因不能正常工作 - 我想也许这与两个表有关。
继承人使用javascript和jQuery:
$('.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();
}
});
});
}
任何人都可以告诉我如何在每个表上运行该函数,而无需在页面加载时与其进行交互。谢谢 - 我已经遗漏了其他脚本,以便更清楚。
由于
答案 0 :(得分:4)
$(document).ready(function() {
$('.filter-gift').each(filterItems);
});
答案 1 :(得分:0)
如果没有附加进一步的要求,首先这是一项相当容易的任务。
//jQuery document ready function to get Page Load
jQuery(document).ready(function(){ //Use a directly nested function
jQuery('.filter-gift').each(filterItems);
});
不幸的是,没有“过滤礼品”这一类的元素。所以我无法检查&#39; .parent()&#39;引用。