我必须动态地在find()选择器中传递一些值来更改图像,所以我试图像下面那样传递。
$('.vd-accordion-grid .collapse').on('shown.bs.collapse', function() {
var imageid=$(this).parent().find("img").attr("id");
var crid='img#'+imageid;
alert("image id ::: "+imageid);
alert("crid:: "+crid);
$(this).parent().find(crid).attr("src", "resources/vidal/images/accordion_down.svg");
}).on('hidden.bs.collapse', function() {
$(this).parent().find(crid).attr("src", "resources/vidal/images/accordion_right.svg");
});
但图像没有变化,但是当我在查找中难以编码图像的id时,图像成功更改。
$(this).parent().find('img#picid0').attr("src", "resources/vidal/images/accordion_down.svg");
其实我在java custome标签中写了html代码,请在下面找到。
"<a data-toggle=\"collapse\" href=\"#collapse"+iClauseCnt+"\" aria-expanded=\"true\" aria-controls=\"collapse"+iClauseCnt+"\" class=\"\" style=\"color:white;font-size: 15px;\">");
"<img id=\"picid"+iClauseCnt+"\" src=\""+webcontext+"/resources/vidal/images/accordion_down.svg\" alt=\"accordion_down\">");
""+eleClause.valueOf("@name"));
"</a>");
答案 0 :(得分:3)
你的代码很好,只需要考虑一件小事 在on(&#39; hidden.bs.collapse&#39;)回调函数中,变量crid是&#34; undefined&#34;因为它没有在这个函数的范围内声明
检查以下代码
$('.vd-accordion-grid .collapse').on('shown.bs.collapse', function() {
var imageid=$(this).parent().find("img").attr("id");
var crid='img#'+imageid;
alert("image id ::: "+imageid);
alert("crid:: "+crid);
$(this).parent().find(crid).attr("src", "resources/vidal/images/accordion_down.svg");
}).on('hidden.bs.collapse', function() {
// crid here was undefined <======================
var imageid=$(this).parent().find("img").attr("id");
var crid='img#'+imageid;
$(this).parent().find(crid).attr("src", "resources/vidal/images/accordion_right.svg");
});
让我知道它是怎么回事
答案 1 :(得分:0)
请试试这个:
你的代码是对的,我认为你没有正确的图片ID。请 看看吧。
请添加如下:
$(this).parent().find('img#'+imageid).attr("src", "resources/vidal/images/accordion_down.svg");