我是Jquery的初学者,我有这个小问题,我不知道如何修复。我试过用JSFiddle进行调试但是我没有成功所以我的问题在这里:
我有两个div元素,在第一个div中我有几个文本框,在第二个div中我有我的按钮。我希望当我点击按钮时,第一个div中的特定文本框变空。
好的,整个图片是我事先不知道文本框名称(列表是fetch,ASP.NET MVC自动命名我的输入字段),所以我唯一知道的是我要清空第一个文本框,其名称属性值以“input1”结束(它的开头是自动生成的)。我也知道我感兴趣的文本框是紧接在我的按钮之前的文本框。我希望我很清楚。
这是我的小提琴无效:http://jsfiddle.net/XvTNh/1/
任何帮助都会受到赞赏!
HTML:
<div class="myClass1">
<input name="fdsgginput1" type="text" value="Salé sucré"/>
<input name="gfsginput2" type="text" value="Macarons"/>
</div>
<div class="myClass2fdsff">
<input type="submit" name="envoyer" />
JS:
$("div[class^='myClass2']").on('click','input[name="envoyer"]',function(){
$(this).closest('input[name$="input1"]').val('');
});
答案 0 :(得分:2)
您基本上是在尝试浏览DOM。 closest
不会寻找HTML中可能存在的其他元素。相反,它会向上移动DOM树,查看祖先元素,并查看是否有任何元素与您传递的选择器匹配。
由于您想要的元素不是祖先元素,因此无法找到它。实际上你需要添加一个共同的祖先元素(实际上你的HTML可能已经包含一个),然后结合closest
和find
来找到元素:
$("div[class^='myClass2']").on('click', 'input[name="envoyer"]', function () {
$(this).closest('.container').find('input[name$="input1"]').val('');
});
答案 1 :(得分:0)
试试这个
$("body").find('input[name$="input1"]').first().val('');
答案 2 :(得分:0)
试试这个:
<script>
$(document).ready(function(){
$('.myClass2fdsff input[type=submit]').click(function(){
$('.myClass1 input:first').val(''); // Empty first textbox
$('.myClass1 input[name*=input1]').val(''); //Empty input with input1 in name
});
});
</script>