无法让 Jquery 在 JSFiddle 之外正常工作
Can't get Jquery to work correctly outside of JSFiddle
我有一个基本的 table,我是通过文本输入创建的,当您单击 "addTask" 按钮时,它会添加一个带有空文本框的 tr,然后单击 "delTask" 按钮应该从 table 中删除选中复选框的行。
JSFiddle 中的一切都完美无缺(除了只在 JSFiddle 之外渲染最后一个文本框的行除外)但是当我尝试实时测试代码时,"delTask" 按钮无法正常工作。它将删除 table 中除第一行以外的所有行。
我是 JQuery 的新手,所以请不要判断它是否简单,但我确实在寻找答案并尝试了我能找到的一切。谁能帮我弄清楚这里出了什么问题?提前致谢。
EDIT 我通过将 $(":checkbox[checked='true']") 更改为 $ 解决了 delTask 按钮根本不起作用的初始问题(".checkbox:checked") 在 JSFiddle 之外进行测试时,但在实时测试中仍然无法获得删除 table 上第一行的按钮。
JSFiddle link: http://jsfiddle.net/2aLfr794/14/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
</head>
<body>
<table id="tasks" cellpadding="3" cellspacing="3" border="0">
<tr>
<td><input type="checkbox"></td>
<td><input type="text" class="text"></td>
</tr>
</table>
<br>
<input type="button" id="addTask" value="Add Task" />
<input type="button" id="delTask" value="Delete Tasks" />
<script>
$("#addTask").click(function(){
var newTxt = $('<tr><td><input type="checkbox"></td><td><input type="text" class="text"></td></tr>');
$(".text").last().prop("readonly", true);
$("#tasks").append(newTxt);
});
$("#delTask").click(function(){
$(".checkbox:checked").each(function(){
var curTask = $(this).parents('tr');
curTask.remove();
});
});
</script>
</body>
</html>
如果出现“$ is not defined”错误,请尝试写入
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
作为 <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
请注意“//cdnjs”之前的 "http:" 当您 运行 来自本地机器而不是网络服务器时需要它。至少我总是需要它。
您的问题:
1.You 未将 class checkbox
分配给默认值 checkbox
并动态创建 checkboxes
。
2.To 访问选中的元素语法为 $(".checkbox[checked='checked']")
您的更新代码:
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<body>
<table id="tasks" cellpadding="3" cellspacing="3" border="0">
<tr>
<td>
<input type="checkbox" class="checkbox">
</td>
<td>
<input type="text" class="text">
</td>
</tr>
</table>
<br />
<input type="button" id="addTask" value="Add Task" class="addSubmit" />
<input type="button" id="delTask" value="Delete Selected Tasks" />
<script>
$("#addTask").click(function() {
var newTxt = $('<tr><td><input type="checkbox" class="checkbox"></td><td><input type="text" class="text"></td></tr>');
$(".text").last().prop("readonly", true);
$("#tasks").append(newTxt);
});
$(document).ready(function() {
$("#delTask").click(function() {
console.log($(".checkbox[checked='checked']"))
$(".checkbox:checked").each(function() {
var curTask = $(this).parents('tr');
curTask.remove();
});
});
});
</script>
</body>
$("input[type=checkbox]:checked")
对我有用
我有一个基本的 table,我是通过文本输入创建的,当您单击 "addTask" 按钮时,它会添加一个带有空文本框的 tr,然后单击 "delTask" 按钮应该从 table 中删除选中复选框的行。
JSFiddle 中的一切都完美无缺(除了只在 JSFiddle 之外渲染最后一个文本框的行除外)但是当我尝试实时测试代码时,"delTask" 按钮无法正常工作。它将删除 table 中除第一行以外的所有行。
我是 JQuery 的新手,所以请不要判断它是否简单,但我确实在寻找答案并尝试了我能找到的一切。谁能帮我弄清楚这里出了什么问题?提前致谢。
EDIT 我通过将 $(":checkbox[checked='true']") 更改为 $ 解决了 delTask 按钮根本不起作用的初始问题(".checkbox:checked") 在 JSFiddle 之外进行测试时,但在实时测试中仍然无法获得删除 table 上第一行的按钮。 JSFiddle link: http://jsfiddle.net/2aLfr794/14/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
</head>
<body>
<table id="tasks" cellpadding="3" cellspacing="3" border="0">
<tr>
<td><input type="checkbox"></td>
<td><input type="text" class="text"></td>
</tr>
</table>
<br>
<input type="button" id="addTask" value="Add Task" />
<input type="button" id="delTask" value="Delete Tasks" />
<script>
$("#addTask").click(function(){
var newTxt = $('<tr><td><input type="checkbox"></td><td><input type="text" class="text"></td></tr>');
$(".text").last().prop("readonly", true);
$("#tasks").append(newTxt);
});
$("#delTask").click(function(){
$(".checkbox:checked").each(function(){
var curTask = $(this).parents('tr');
curTask.remove();
});
});
</script>
</body>
</html>
如果出现“$ is not defined”错误,请尝试写入
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
作为 <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
请注意“//cdnjs”之前的 "http:" 当您 运行 来自本地机器而不是网络服务器时需要它。至少我总是需要它。
您的问题:
1.You 未将 class checkbox
分配给默认值 checkbox
并动态创建 checkboxes
。
2.To 访问选中的元素语法为 $(".checkbox[checked='checked']")
您的更新代码:
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<body>
<table id="tasks" cellpadding="3" cellspacing="3" border="0">
<tr>
<td>
<input type="checkbox" class="checkbox">
</td>
<td>
<input type="text" class="text">
</td>
</tr>
</table>
<br />
<input type="button" id="addTask" value="Add Task" class="addSubmit" />
<input type="button" id="delTask" value="Delete Selected Tasks" />
<script>
$("#addTask").click(function() {
var newTxt = $('<tr><td><input type="checkbox" class="checkbox"></td><td><input type="text" class="text"></td></tr>');
$(".text").last().prop("readonly", true);
$("#tasks").append(newTxt);
});
$(document).ready(function() {
$("#delTask").click(function() {
console.log($(".checkbox[checked='checked']"))
$(".checkbox:checked").each(function() {
var curTask = $(this).parents('tr');
curTask.remove();
});
});
});
</script>
</body>
$("input[type=checkbox]:checked")
对我有用