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 ------^