2014-10-15 4 views
1

Я вызываю событие изменения табуляции на теге привязки click.on first time page load его нужно дважды щелкнуть, чтобы выполнить это действие. После перехода на следующую вкладку и обратно, то одна и та же функция работает с один click.I пробовал разные методы, но не work.My код ниже: Html LinkЯкорь нужно дважды щелкнуть, чтобы выполнить действие в js

<a class="btn btn-default-o pull-right btn-sm" id="checkpname">Next »</a> 
jQuery(document).ready(function() { 
    jQuery("#checkpname").click(function() { 
     if (jQuery('#name').val() == '') { 
      alert("Please select Product name First.") 
      jQuery('#name').focus(); 
      jQuery('#name').css('border', '1px solid red'); 
     } 
     else { 
      changetab('step2'); 
     } 
    }); 

    function changetab(hrf){ 
     jQuery('a.btn').each(function() { 
     jQuery(this).click(function() { 
      //var thisid = $('#sell .tab-pane.active').attr('id'); 
      jQuery('.wizard a[data-toggle="tab"]').removeClass('current'); 
      jQuery('.wizard a[href="#' + hrf + '"]').click(); 
     }); 
    }); 
} 

вкладка Изменение осуществляется при нажатии кнопки дважды link.while раз переехал на следующую вкладку, то он сделал то же самое работа на один клик, который является правильным способом сделать это. Может быть кто-то может мне помочь

+0

Вы гнездящиеся обработчики, вы не должны –

+0

@ A.Wolff Означает ? Получил вас – Adda

+0

При первом нажатии на якорь вы привязываете второй клик (вызов функции changetab). Только второй раз, когда вы нажимаете, вызывается новый обработчик кликов. Похоже на то, как вы себя чувствуете –

ответ

0

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

В вашем примере кода вы вызываете функцию changetag, которая связывает новый прослушиватель кликов с тегом a. Удаление второго щелчка привязки jQuery(this).click(function() { и немедленное инициирование щелчка должны заставить его работать.

Ex:

jQuery(document).ready(function() { 
    jQuery("#checkpname").click(function() { 
     if (jQuery('#name').val() == '') { 
      alert("Please select Product name First.") 
      jQuery('#name').focus(); 
      jQuery('#name').css('border', '1px solid red'); 
     } 
     else { 
      changetab('step2'); 
     } 
    }); 

    function changetab(hrf){ 
     jQuery('a.btn').each(function() { 
      //var thisid = $('#sell .tab-pane.active').attr('id'); 
      jQuery('.wizard a[data-toggle="tab"]').removeClass('current'); 
      jQuery('.wizard a[href="#' + hrf + '"]').click(); 
     }); 
    } 
}); 
0

Если я правильно Вас понял, вы хотите нажать только один раз, чтобы заставить его работать?

проверить эту скрипку я сделал на основе кода и дайте мне знать, если я понял Вас правильно ^^

http://jsfiddle.net/wge1e1jL/

$("#checkpname").click(function() { 

if ($("#name").val() === '') { 
    alert("Please select Product name First."); 
    $('#name').focus(); 
    $('#name').css('border', '1px solid red'); 
} else { 
    changetab('step2'); 
} 
}); 

function changetab(hrf) { 
alert('function executed'); 
$('a.btn').each(function() { 
// $('this').click(function() { 
     alert('second click executed'); 
     $('.wizard a[data - toggle = "tab"]').removeClass('current'); 
     $('.wizard a[href = "#' + hrf + '"]').click(); 
    //  }); 
    }); 
} 
Смежные вопросы