单击div后如何用jQuery更改隐藏值

时间:2017-11-05 10:43:30

标签: jquery

我在函数中附加了一些图像,但当我点击任何附加图像时,我想将隐藏值更改为"是"。它默认设置为" 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>

2 个答案:

答案 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的元素!