我每次点击一个按钮时都会尝试显示一个新元素,这就是我想出的:
$(document).ready(function(e) {
$('#addNew').click(function() {
$('#D2').slideDown();
this.id = '#addNew2';
});
$('#addNew2').click(function() {
$('#D3').slideDown();
this.id = '#addNew3';
});
$('#addNew3').click(function() {
$('#D4').slideDown();
this.id = '#addNew4';
});
});
这里还有一个小提琴http://jsfiddle.net/QZF4S/
第一次工作正常,但是ID会改变,但之后不起作用吗?
在此之前,我尝试使用if else语句检查元素是否为显示块,以及是否在点击时打开了下一个元素。但这有同样的问题,只能工作一次
任何帮助将不胜感激。
谢谢, 路加
答案 0 :(得分:2)
问题在于你在追求你的功能。加载时,文档不包含辅助ID,因此#addNew2
单击功能永远不会附加到链接,因为链接的ID在第一次单击事件中更改。
如果您知道它将是一定数量的项目,您可以嵌套事件。以下是此案例的更新小提琴:http://jsfiddle.net/Y6yHu/
如果您希望这是无限制的并添加用户想要的项目,则需要创建一个执行操作的独立功能,然后将此功能附加到您的addNew
点击事件中,但保留ID相同。在辅助功能中,您可以检测添加的元素的数量,并根据存在的内容执行操作。
答案 1 :(得分:1)
DO
jQuery(document).ready(function(e) {
var arr=new Array('D1','D2','D3','D4');
var clickCount=0;
jQuery('#addNew').click(function() {
clickCount++;
$("#"+arr[clickCount]).slideDown();
});
});
答案 2 :(得分:0)
事件处理程序仅绑定到当前选定的元素;在您的代码调用.click()
时,它们必须存在于页面上在您的代码中,您正在更改元素的ID,click
事件处理程序不知道动态创建的元素。
要处理此问题,您可以使用
$(document).on( eventName, selector, function () {
} ); // attaches event handler current set of matched element as well as dynamically created elements.