jQuery每个对象选择器

时间:2014-01-28 04:50:31

标签: javascript jquery

$(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
    });
});

为什么我必须在循环内重新指定选择器?

2 个答案:

答案 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 ..好吧,为后人。