我正在加载一个 php 生成页面的内容,该页面返回一个用户资产列表,每个资产都具有如下 html 结构:
更新以包括所有动态生成的 html。
<div id='list'>
<div id='asset12345' class='asset'>
<div class='assetName'>Someform of asset</div>
</div>
// repeat .asset block as many times as needed.
</div>
一旦页面显示给用户,我想要做的是在用户输入输入框时过滤项目。
如果我只是在同一个文档中列出一个列表,我就有这个工作,但是一旦我在任何加载的数据上尝试它,它就会失败。
这是我到目前为止的完整代码。我可能已经对它进行了哈希处理。
(function ($) {
jQuery.expr[':'].Contains = function(a,i,m){
return (a.textContent || a.innerText || "").toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
function listFilter(filter, list) {
// creates the input element.
var form = $("<form>").attr({"class":"filterform","action":"#"}),
input = $("<input>").attr({"class":"filterinput centered","type":"text","value":"Type To Filter"}),
$(form).append(input).appendTo(filter);
// checking for the user typing
$(input)
.change( function () {
var filter = $(this).val();
if(filter) {
$(list).find(".assetName:not(:Contains(" + filter + "))").parent().slideUp('fast');
$(list).find(".assetName:Contains(" + filter + ")").parent().slideDown('fast');
} else {
$(list).find(".asset").slideDown();
}
return false;
})
.keyup( function () {
$(this).change();
});
}
$(function () {
listFilter($("#filter"), $("#list"));
});
// display a link for the user.
$(".asset")
.click( function() {
var assid = $(this).id();
if (assid.length > 5) {
var wish = "&wish=true";
}
$("#link_display").load("getuser.php?ass_id=" + assid + wish);
});
}(jQuery));
$(document).ready(function(){
// loading up the initial page
$("#wrap").load("getuser.php");
// just removing initial value from the input on focus
$(".centered").focus(function(){
if(this.value == 'Type To Filter') {
this.value = '';
}
});
});