我有一块JS,只需点击一下按钮就可以将以下内容添加到Web表单中。单击div .remove
后,将删除最近的new-attribute
div。它工作正常。
<div class="new-attribute">
<h3>New Attribute</h3>
<label for="attributeName3">Name:</label>
<input class"attribute"="" type="text" name="attributeName3">
<label for="attributeType3">Type:</label>
<select id="t" class="attribute" name="attributeType3">
<option value="text" selected="">Text</option>
<option value="checkbox">Checkbox</option>
<option value="select-list">Select Option List</option>
<option value="notes">Notes</option>
</select>
<div class="option"></div>
<div class="remove">Delete</div>
</div>
在div“选项”中,我有代码在select输入中选择“select-list”时添加另一个表单字段。这是行不通的。我不知道为什么。没有变量名称发生冲突。我离开了我不应该给选择一个id,因为它是经常性的,我只是想在它使它符合之前让它工作。
这是我遇到麻烦的Js:
//select temp
var select="<div class=\"new-option\">"
+ "<h3>new option</h3>"
+ "<label for=\"attributeName"+count+"\">New otion:</label>"
+ "<input class\"attribute\" type=\"text\" name=\"attributeName"+count+"\">"
+ "</div>";
//get value of select
$('#t').change(function() {
var selectVal = $('#t :selected').val();
if (selectVal == "select-list") {
$(this).closest('.option').append(select);
}
});
代码适用于$(select).appendTo('.option');
但是,它会将代码附加到页面上“option”类的每个实例。我只希望它附加到当前或最接近的那个。
提前谢谢
答案 0 :(得分:3)
问题是因为closest()
在DOM中查找与选择器匹配的最近父元素,但.option
是#t
的兄弟。请尝试使用next()
:
$('#t').change(function() {
if ($(this).val() == "select-list") {
$(this).next('.option').append(select);
}
});
答案 1 :(得分:0)
$('#bob').change(function(){
$('#nuform').append('<p>your new form here</p>');
});
答案 2 :(得分:0)
如果您更改订单,请避免使用next,prev,因为它可能会失败。 而是尝试在代码中使用兄弟姐妹而不是最近的:
$(this).siblings('.option').append(select);
在此处详细了解:http://api.jquery.com/siblings/