我在函数中附加了一些图像,但当我点击任何附加图像时,我想将隐藏值更改为"是"。它默认设置为" No"。
var id = $(this).data("id");
$( ".thumbs" ).append("<div class='thumb-wrapper' data-name='" + $(this).val() + "'><img class='loading' src='uploads/" +$(this).val()+"'><div class='thumbs-close' data-id='" + id + "'>x</div><input type='hidden' name='featured' value='No' id='hidden'></div>");
以下是我点击拇指包装类时的代码:
$( ".thumbs" ).on("click", ".thumb-wrapper", function(e) {
var hidden = $(this).closest("#hidden").val("Yes");
alert(hidden);
目前警告&#34;未定义&#34;。
生成的HTML的一个示例是:
<div class="thumbs">
<div class="thumb-wrapper" data-name="chocolate.jpg">
<img class="loading" src="uploads/chocolate.jpg"><div class="thumbs-close" data-id="image_8">x</div>
<input type="hidden" name="featured" value="No" id="hidden">
</div>
</div>
答案 0 :(得分:2)
这里的问题是closest
正在搜索。您需要使用find
来搜索而不是向上搜索。
var hidden = $(this).find("#hidden").val("Yes");
Jquery最近的官方解释:
描述:对于集合中的每个元素,通过测试元素本身并通过DOM树中的祖先遍历向上来获取与选择器匹配的第一个元素。
还有其他相关问题要求替代最接近的搜索方向,从上到下:Is there an equivalent to .closest() that searches down the DOM tree instead of up?
如果要将值保存在var use:
var hiddenObj = $(this).find("#hidden");
var valueVar = hiddenObj.val();
alert(valueVar);
答案 1 :(得分:1)
您最好将隐藏的输入更改为class:
<input type="hidden" name="featured" value="No" class="hidden">
$( ".thumbs" ).on("click", ".thumb-wrapper", function(e) {
var hidden = $(this).find(".hidden").val("Yes");
alert(hidden);
您不能拥有多个共享相同ID的元素!