JQuery вызвать функцию - PullRequest
       6

JQuery вызвать функцию

0 голосов
/ 06 января 2012

Мне нужно выполнить posImgCar() функцию после этого кода

$('details_img').click(function(i){
    ...
   $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
   ...
});

, поэтому у меня было это:

 $('details_img').click(function(i){
    ...
   $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
  /*--->*/ posImgCar();
   ...
});

posImgCar();

Но он просто вызывает posImgCar(), когда я нажимаю дваждына том же изображении.

Как мне поступить, чтобы выполнить это?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

В вашем примере кода вы привязывали обработчик события click к $('details_img'), что означает, что вы привязывали его к пользовательскому элементу, например, как если бы ваш HTML содержал <details_img></details_img>. Я предполагаю, что details_img на самом деле является именем класса или идентификатором.

В вашем примере кода вы также вызывали postImgCar() после присоединения обработчика события щелчка к details_img, предположительно при загрузке страницы. Если это не то, что вы хотели сделать, тогда, конечно, уберите этот дополнительный звонок.

Если вы хотите, чтобы postImgCar() выполнялось каждый раз, когда пользователь нажимает details_img, и после того, как атрибут href установлен, сделайте это, если details_img является именем класса :

$('.details_img').click(function(i){
    // ...
    $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
    posImgCar();
    // ...
});

Или это, если details_img , идентификатор :

$('#details_img').click(function(i){
    // ...
    $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
    posImgCar();
    // ...
});

Наконец, если вы используете jQuery 1.6 или новее, рассмотрите возможность использования метода .prop() вместо .attr(). См. jQuery API документацию для .prop () для объяснения.

2 голосов
/ 06 января 2012

Я думаю, вы ищете jQuery .one():

$('.details_img').one('click', function(i){
    ...
   $(this).closest(".page").find(".car_detail").parent().attr('href', $(this).attr('src'));
   ...
   posImgCar();
});

Из документов:

Этот метод идентичен .bind() за исключением того, что обработчик не связан после первого вызова.

...