2015-05-29 2 views
0

Первый щелчок не работает, но каждый щелчок после делает отлично. Есть ли что-то, что я делаю неправильно или это сайт? (Я использую JS скрипку, кстати)Первый щелчок не работает

$("a").click(function() { 
    var x = document.getElementsByTagName("a"); 
    $(x).click(function() { 
     var y = this.parentElement.parentElement; 
     $(y).hide("slide", { 
      direction: "right" 
     }, 1000); 
    }); 
}); 
+3

почему '$ (х) .click()' 'внутри $ (» a). click() '.... также где скрипка –

+0

huh guess, я не выбрал это, это действительно имело бы смысл, если бы я взял один клик. – Grandmaster27971

+0

Вот исправленная скрипка, если вы хотите посмотреть. https://jsfiddle.net/Grandmaster27971/rf8q4nz9/35/embedded/result/ – Grandmaster27971

ответ

1

На ваш первый клик, вы выполняете функцию, которая добавляет еще один щелчок слушателя, поэтому он не будет выполняться до тех пор, пока не будет нажата снова. Попробуйте что-то вроде этого:

function yourFunction() { 
    var y = this.parentElement.parentElement; // this may have to be slightly modified - I'm not sure of the rest of your code 
    $(y).hide("slide", { 
     direction: "right" 
    }, 1000); 
} 

$("a").click(function() { 
    var x = document.getElementsByTagName("a"); 
    $(x).click(yourFunction); 
    yourFunction(); // calling yourFunction here also ensures it's called on the first click 
}); 

Редактировать: это избыточно. У Аруна П. Джонни гораздо более чистое решение. Это то, что я получаю от пребывания всю ночь.

1

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

Также здесь вы прикрепляете новый обработчик кликов в каждом щелчке анкерного элемента.

Вместо этого вы можете просто добавить скрыть логику первого щелчка сам обработчик как

$("a").click(function() { 
    $(this).parent().parent().hide("slide", { 
     direction: "right" 
    }, 1000); 
}); 

Демо: Fiddle

Смежные вопросы