我正在尝试在按下按钮后隐藏动态创建的表格行。到目前为止,我已设法处理部分动态函数。
每个动态行都有一个“取消”和“保存”按钮,我已设法轻松响应这些。我的问题实际上是使用行本身。
$(function() {
$(".add").click(function(){
// Just append to the table
$("table#bookmarks tr:first").after("<tr class='new' id='<?php echo rand(1, 9999); ?>'><td></td><td><b>URL:</b> <input type='text' id='newURL' /><br /><b>Title:</b> <input type='text' id='newTitle' /><br /><b>Description:</b><br /><textarea id='newDesc'></textarea></td><td><b>Tags:</b> <input type='text' id='newTags' /></td><td><a href='#' class='save'>Save</a><br /><a href='#' class='cancel'>Cancel</a></td></tr>");
$('span#links').html('<i style="color: #FF0000">You must reload to recount links!</i>');
// Actually, the user doesn't want to add another link
$('.cancel').click(function() {
$(this).parents(".new").animate({ backgroundColor: "#FF0000" }, "fast").animate({ opacity: "hide" }, "slow");
});
// Seems the user wants to add a link!
$('.save').click(function() {
$("table#bookmarks tr.new #id").animate({ backgroundColor: "#FFFFFF" }, "fast").animate({ opacity: "hide" }, "slow");
});
});
});
我现在需要隐藏行,我已经尝试了各种各样的方法,。parent,.attr等等。
答案 0 :(得分:3)
尝试链接你的jQuery函数:
$(function() {
$(".add").click(function() {
$("<tr class='new'><td></td><td><b>URL:</b> <input type='text' id='newURL' /><br /><b>Title:</b> <input type='text' id='newTitle' /><br /><b>Description:</b><br /><textarea id='newDesc'></textarea></td><td><b>Tags:</b> <input type='text' id='newTags' /></td></tr>")
.append($("<td></td>")
.append($("<a href='#'>Save</a><br/>")
.click(function() { $(this).parents(".new").animate({ backgroundColor: "#FF0000" }, "fast").animate({ opacity: "hide" }, "slow"); }))
.append($("<a href='#'>Cancel</a>")
.click(function() { $(this).parents(".new").animate({ backgroundColor: "#FF0000" }, "fast").animate({ opacity: "hide" }, "slow"); })))
.insertAfter($("table#bookmarks tr:first"));
$('span#links').html('<i style="color: #FF0000">You must reload to recount links!</i>');
});
});
(这是原始代码的修改版本,因此它仍然有点混乱。)
答案 1 :(得分:2)
你可以使用自jQuery 1.3.2以来的jQuery live,以保留动态创建项目的click功能。
答案 2 :(得分:0)
我把一个快速的例子扔在一起,但我承认我在jQuery上有点生气。但是这段代码确实有效,至少对我而言。
$(function() {
$(".add").click(function(){
var save = $("<a href='#' class='save'>Save</a>").click(function() {
$(this).parent().animate({ backgroundColor: "#FFFFFF" }, "fast").animate({ opacity: "hide" }, "slow")
})
var cancel = $("<a href='#' class='cancel'>Cancel</a>").click(function() {
$(this).parent().animate({ backgroundColor: "#FFFFFF" }, "fast").animate({ opacity: "hide" }, "slow")
})
var buttonTD = $("<td></td>");
buttonTD.append(save);
buttonTD.append(cancel);
var row = $("<tr class='new' id='<?php echo rand(1, 9999); ?>'><td></td><td><b>URL:</b> <input type='text' id='newURL' /><br /><b>Title:</b> <input type='text' id='newTitle' /><br /><b>Description:</b><br /><textarea id='newDesc'></textarea></td><td><b>Tags:</b> <input type='text' id='newTags' /></td></tr>")
.append(buttonTD);
});
});
答案 3 :(得分:0)
jQuery live函数:
$("#sendmail").live("click", function(){
// your code goes here
});
这是我如何使用它的一个例子。
$("#sendmail").live("click", function(){
$("#emailres").html('<img src="../images/ajax-loader.gif">');
var youremail = $("#youremail").val();
var subject = $("#subject").val();
var message = $("#message").val();
$.ajax({
type: 'post',
url: 'email.php',
data: 'youremail=' + youremail + '&subject=' + subject + '&message=' + message,
success: function(results) {
$('#emailres').html(results);
}
}); // end ajax
});
要隐藏所选行,请执行以下操作:
首先给你的表一个id(类似于#mytable)
$("#cancel_row").live("click", function(){
$(this).$("#mytable tr").hide();
});
希望能帮到你。