我尝试使用jQuery向Fadein写一个小脚本最近的图像,但由于某些原因,这段代码无效。任何人都可以帮我解释语法吗?感谢
$( ".delimg" ).click(function() {
$(this).closest( "img" ).fadeTo( "slow" , 0.5, function() {
$("input[type='button']").toggle(
function(){
$(this).val("Undelete");
},
function(){
$(this).val("Delete");
}
);
});
});
HTML
<div class="swiper-slide">
<img src="http://20percents.com/backend/uploads/C0d49a7de7b635477125ffffa8df7b931.jpg" class="swipe-image">
<center><input type="button" class="delimg" value="Delete"></center>
</div>
<div class="swiper-slide">
<img src="http://20percents.com/backend/uploads/C0d49a7de7b635477125ffffa8df7b932.jpg" class="swipe-image">
<center><input type="button" class="delimg" value="Delete"></center>
</div>
答案 0 :(得分:2)
img
元素不是单击按钮的直接父元素。你需要使用最接近获得包含div,然后搜索其中的图像。试试这个:
$(".delimg").click(function () {
$(this).closest(".swiper-slide").find('img').fadeTo("slow", 0.5);
});
另请注意,toggle
无法再以您的方式使用。它现在只显示/隐藏元素,而不是在连续点击时运行特定功能。
要根据需要更改按钮的文本,您可以将功能传递给val()
,如下所示:
$(".delimg").click(function () {
var $button = $(this);
$button.closest(".swiper-slide").find('img').fadeTo("slow", 0.5, function() {
$button.val(function(i, value) {
return value == "Delete" ? "Undelete" : "Delete";
});
});
});
答案 1 :(得分:1)
它不是祖先,所以你需要遍历 -
$(this).closest( ".swiper-slide" ).find("img").fadeTo( "slow" , 0.5, function() {
答案 2 :(得分:1)
由于img
不是input
的父级,所以你必须这样做:
$(this).closest(".swiper-slide").find("img")
您必须使用类swiper-slide
获取父div,然后从其中获取img
。
答案 3 :(得分:0)
你应该上升一级,然后找到
$(...).parent().find(...);
$( ".delimg" ).click(function() {
$(this).parent().find( "img" ).fadeTo( "slow" , 0.5, function() {
$("input[type='button']").toggle(
function(){
$(this).val("Undelete");
},
function(){
$(this).val("Delete");
}
);
});
});
修改
我错过了<center>
代码
使用.parent().parent()