可以't选择并隐藏任何以前的元素
Can't select and hide any previous element
我对这个问题快要失去理智了。任何形式的jQuery选择器似乎都无法动态查找链接上方的任何元素。我正在尝试访问链接上方的元素并将其隐藏。使用parent()
、prev()
、before()
、closest()
等。将显示一个非null对象,但它不会响应hide()
方法。
<div class="row">
<div class="col-xs-5">
<div id="test_fields">
<li id="test_input" class="string input optional stringish">
<label class="label" for="test_input">Ingredient name</label>
<input type="text" name="test_input" value="afsfasf" id="test_input">
</li>
</div>
<input type="hidden" id="recipe_recipe_ingredients_attributes_0__destroy" name="recipe[recipe_ingredients_attributes][0][_destroy]">
<a href="javascript:void(0)" id="test_link" css_class="small" onclick="javascript:remove_fields(this)">Remove Ingredient</a>
</div>
</div>
function remove_fields(link)
{
$(link).prev("input[type=hidden]").val('1'); // this doesn't work
var divToHide = $(link).prev('div');
$(divToHide).hide() // this doesn't work
//$('#test_fields').hide(); //this works
}
尝试替换如下链接:
<a href="javascript:void(0)" id="test_link" css_class="small" onclick="javascript:remove_fields($(this))">Remove Ingredient</a>
我不确定。但也许这就是问题所在。因为我记得我以前对"这个"有过问题,当我更换它时,它就完成了任务。
您可以尝试.closest()和.find()TR
function remove_fields(link) {
$(link).closest('div[class^="col-xs"]').find("input[type=hidden]").val('1');
var div_to_hide = $(link).closest('div[class^="col-xs"]').find('#test_fields');
$(div_to_hide).hide();
//$('#test_fields').hide(); //this works
}
不能使用.val()
更改隐藏输入的"value"属性。您需要使用:
$(link).prev("input[type=hidden]").attr('value', '1');
由于我真的不确定你想对这个输入做什么,我就这样算了。
.prev()
fn仅结构中的前一个元素。由于input
是<a>
的前一个元素,所以不能像那样选择div
。例如,您可以使用.siblings()
。
$(link).siblings('div').hide();
如果您将代码分解为多个片段,它会变得更容易。
首先,我获取了"链接",从中获取了它上面最近的div,然后我获取了输入。
我没有对您的代码做太多更改。
function remove_fields(link)
{
var $link =$(link);
var $divToHide = $link.closest('div');
$divToHide.find("input[type='hidden']").val('1');
$divToHide.hide()
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="row">
<div class="col-xs-5">
<div id="test_fields">
<li id="test_input" class="string input optional stringish">
<label class="label" for="test_input">Ingredient name</label>
<input type="text" name="test_input" value="afsfasf" id="test_input">
</li>
</div>
<input type="hidden" id="recipe_recipe_ingredients_attributes_0__destroy" name="recipe[recipe_ingredients_attributes][0][_destroy]">
<a href="javascript:void(0)" id="test_link" css_class="small" onclick="javascript:remove_fields(this)">Remove Ingredient</a>
</div>
</div>
相关文章:
- 从dom中删除任何元素后,Touchmove事件停止触发
- 制作 JavaScript 代码适用于任何元素
- jQuery:append()不是't在选择器中插入任何元素
- 与任何元素的 .innerHTML 属性匹配的 JavaScript 正则表达式
- 观察任何元素何时更改
- .scrollInto查看带有数据标记的任何元素,或使用类对带有数据标签的内容进行分段
- 以elementsByClassName数组的任何元素为目标
- 如何访问迭代模板中的任何元素
- 检查是否有任何元素具有焦点
- 如何在没有任何元素id的情况下检索表中的文本内容
- 正在Jquery中的列表中不包含任何元素的列表中删除
- 为什么这不返回任何元素
- 如何获取任何元素的渲染上边距
- Div 高度不会在附加任何元素时增加
- 在鼠标悬停/鼠标出类中的任何元素时更改元素 ID
- 使滑动水平线上的任何元素居中
- 选择器“app”与任何元素都不匹配
- 在网页上单击任何元素时触发 js 函数
- JQuery - 使我悬停在包含某个类的任何元素的内容变暗
- 有没有办法使 ID 对于页面上的任何元素而不是文档的唯一性