Jquery同时附加和绑定的问题
我正在为我的网站制作一个精细的下拉选择解决方案。
我制作了一个Click Here!
链接。
点击它我调用一个popup()
函数。
$(".popper").click(function() { popup($(this)); });
在popup()
函数中我检查是否已经打开了? 没有?
让我们做一个div并用fillwiththings()
填充它。
function popup(where) { if (where.hasClass("on")) { where.removeClass("on"); where.next("div").remove(); } else { where.addClass("on"); fillwiththings(where); } } function selectclose(where) { var nameval = $(this).attr("name"); var textval = $(this).text(); where.attr("name", nameval); where.text(textval); where.removeClass("on"); where.next("div").remove(); } function fillwiththings(where, id) { $container = $('') for (i = 0; i < object.length; i++) { $container.append($(''+jsonobject[i]["name"]+'').bind("click", {where: where}, selectclose())); } }
在fillwiththings()
我想使用where参数绑定到附加的另一个函数,以关闭并替换a(Click Here!)标记的文本和名称值。 但绑定失败了。 我错过了什么? 请帮忙。
谢谢。
您没有正确访问where
参数。 事件数据不作为参数传递给事件处理程序,它是事件对象的属性:
function selectclose(event) { event.data.where .attr("name", $(this).attr("name")) .text($(this).text()) .removeClass("on") .next("div").remove(); }
另一个问题是你将selectclose()
的返回值传递给bind。 你必须直接传递函数:
$container.append($(...).bind("click", {where: where}, selectclose)); // no parenthesis ------^