在$(this)
..
.each()
对象时遇到问题
不确定我做错了什么。这是有效的,所以它并不重要,但我想知道为什么它不适用于$(this).on("click
而不是$("#b_" + thumb_id).on("click"
//Create a flip button for each attached image.
$(".attached_preview").each(function(){
var att_name = $(this).attr("data-name"), thumb_id = $(this).attr("data-thumb");
//Create the button
var element = document.createElement("input");
element.id = "b_" + thumb_id;
element.type = "button";
element.value = "Flip " + att_name;
//Add button to page
this.parentNode.appendChild(element);
// create function for button.
$("#b_" + thumb_id).on("click",function(e){ //need jQuery object, yet can't use $(this) for some reason. :-(
e.preventDefault(); e.stopImmediatePropagation(); //needed to stop form submission.
//reset the <img> src attribute from the saved copy.
var image = $("#invert"+thumb_id);
image.attr("src",image.attr("data-url"));
image.toggleClass("rotated"); //the bit that actually flips.. used to be so simple!
image.wheelzoom();//Re-enable the zoom
});
});
为什么我必须在循环内重新指定选择器?
答案 0 :(得分:1)
这是因为代码中的$(this)
引用了
$('.attached_preview')
如果点击了$(this).on("click
类的任何元素,则.attached_preview
会触发
其中:
$("#b_" + thumb_id).on("click"
或:
$("#b_" + $(this).attr("data-thumb")).on("click"
对名为id
#b_ + value of data-thumb attribute receive from your clicked .attached_preview
元素点击事件
答案 1 :(得分:0)
我现在看到它,因为:element != $(this)
.. gah ..好吧,为后人。