我有一个创建的动态搜索,它从输入表单中获取数据并搜索匹配对象数组。这些匹配(如果存在的话)会显示在结果的一行上,同时还会显示一个“按钮”以点击该特定搜索结果行上的操作。来自数组的jQuery动态搜索结果
数组中的每个对象都对应于结果的一行,假定搜索项在该对象中找到。
我已经创建了一个委托侦听器来侦听每个显示的结果行按钮的点击。我如何获得按钮来处理创建该行结果的对象中包含的'index:number'。
到目前为止我的代码是一种如下:
var multiArr = [
{label: "Asap Rocky", song: "National", index: 0},
{label: "Rihanna", song: "Umbrella", index: 1},
{label: "Coldplay", song: "Paradise", index: 2}];
$('#results').on("click", ".result-button", function(event) {
alert("You clicked:" + event.target.nodeName);
console.dir($(this).text);
});
$("#finder").keyup(function(e){
var q = $("#finder").val();
console.log("Search Bar contents: " + q);
var pattern = new RegExp("^" + q, "i");
$("#results").empty();
for (var i = 0; i < multiArr.length; i++){
console.log("Checking for " + q + " in " + multiArr[i].label);
console.log("The above is " + pattern.test(multiArr[i].label));
if (pattern.test(multiArr[i].label)) {
console.log("something in here beings with " + q);
/*console.log("Img Url: " + thaArr);*/
//do something
$("#results").append("<div class='result-line'><div class='result-img'><img src='http://img.youtube.com/vi/36wDeLKKoXE/default.jpg' class='center-result-img'></div><div class='result-song-info'><div class='result-song-title'><p>" + multiArr[i].song + "</p></div><div class='result-song-artist'><p>" + multiArr[i].label + "</p></div></div><div class='result-button'>>></div></div>");
}
}
});
只需添加一个数据索引属性的按钮与我的索引在multiArr中匹配,然后在你的l中检索它istener – juvian 2014-08-28 17:14:47
我想我会这样做的方式是添加一个ID与每个结果的索引#相等的div。然后在每个div上添加点击监听器。 – ControlAltDel 2014-08-28 17:16:38
我最终得出的结论是,我应该像上面提到的那样添加一个包含索引值的div。但我以不那么优雅的方式来完成它。作为纯文本。 – phoenixson 2014-08-29 12:56:01