jQuery prependTo来自$(this)的一个类

时间:2012-01-02 17:05:58

标签: jquery

我怎样才能在一个专门来自$(this)的类前面,例如我只想在这个例子中实际点击的div前面加上......

<div>
 <div class='target'></div>
</div>

<div>
 <div class='target'></div>
</div>



$('div').click(function(){
  $('<div>hello</div>').prependTo('.target');
});

3 个答案:

答案 0 :(得分:3)

只挂钩相关的div,然后在处理程序中使用this(但另见下文,我可以通过两种不同的方式阅读您的问题):

$('div.target').click(function(){
  $('<div>hello</div>').prependTo(this);
});

在通过jQuery连接的事件处理程序中,this引用您将处理程序挂钩到接收事件的特定DOM元素。有关详细信息,请参阅bindon文档。

Live example(您最后还有})被撤消,导致语法错误。)

如果您的目标是在目标div前面的外部 div上的任意位置单击,则更像是这样:

$('div').click(function(){
  // Look for "target" divs within this div
  var target = $(this).find("div.target");

  // Did we find any?
  if (target[0]) {
    // Yes, prepend to it/them
    $('<div>hello</div>').prependTo(target);

    // And stop the event
    return false;
  }
});

Live example我们再次使用this,但这次我们使用它来查看事件div是否已传播到div与“目标”类。如果是这样,我们会在您的“hello”div前加上return false;停止活动(您可以使用event.stopPropagation();代替)。

答案 1 :(得分:1)

或者,您可以先选择它并在其前面加上,例如:

$('div.target').click(function(){
  $(this).prepend('<div>hello</div>');
});

更新:您必须将点击添加到目标而不是所有div,否则您将有双重事件。

答案 2 :(得分:0)

$('div.target').click(function(){
  $('<div>hello</div>').prependTo($(this));
});

关闭括号时出错。您已经)},它应该是})

小提琴:http://jsfiddle.net/8SrAW/