2009-12-07 3 views
0

Скажем, у меня есть следующий код для добавления кликабельного изображения после набора элементов. Обработчик кликов срабатывает каждый раз при щелчке изображения, которое не то, что я хочу. Я думаю, что скрытие изображения с использованием .hide() в обработчике кликов - это один подход, но я не могу понять, как обращаться к элементу img в обработчике кликов.Скрытие элемента после стрельбы щелчком мыши

Помощь? Благодаря

$(...) 
    .after($('<img src="..."/>') 
    .css("cursor","pointer") 
    .attr("title","Click here for ...") 
    .click(function(){ ... } 

ответ

0

Вы могли бы дать ваш образ уникальный идентификатор для того, чтобы забрать его:

$(...) 
    .after($('<img id="myimage" src="..."/>') 
    .css("cursor","pointer") 
    .attr("title","Click here for ...") 
    .click(function() 
    { 
     var img = $('#myimage'); 
    } 
+1

The * это * в данном случае относится к элементам, которые были выбраны для добавления HTML после - IMG SRC является то, что добавляется, вот почему это заканчивается тем, что не прямо вперед. – cgp

+0

Я не понимал, что jQuery изменяет контекст «этого» так интуитивно, и jQueri - обманывает его, обертывая его в $ (это)! Это действительно хорошо спроектированная библиотека. Благодаря! –

+1

Вы уверены? Согласно http://www.learningjquery.com/2007/08/what-is- that- это «это» в любом обработчике кликов относится к элементу DOM, для которого записывается обработчик кликов. –

1

Это, вероятно, будет наиболее простой и читаемым, чтобы разбить его на две линии:

var e = $('<img src="..."/>'); 
    $(...) 
    .after(e) 
    .css("cursor","pointer") 
    .attr("title","Click here for ...") 
    .click(function(){ ... use e here... } 

Хотя вы можете использовать следующий, как я сделал в этом примере aka:

$('p') 
    .after($('<img src="..."/>')) 
    .css("cursor","pointer") 
    .attr("title","Click here for ...") 
    .click(function() { 
     $(this).next().css("border", "solid white 5px"); 

    }) 

Для этого нужно использовать , чтобы получить элемент, который вы ищете, без каких-либо временных рядов. http://jsbin.com/ulewo

+0

Я подошел к первой ссылке, этот работает. – cgp

1
$("#foo").click(function() { 
    $(this).hide(); /* This refers to the item(s) being clicked */ 
}) 
Смежные вопросы