Anchor需要两次单击才能在js中执行操作

时间:2014-10-15 10:18:14

标签: javascript jquery

我在锚标签click上调用tab change事件。在第一次页面加载它需要两次点击以执行该操作。移动到下一个选项卡然后返回然后相同的功能单击一下。我尝试了不同的方法但是没有& #39; t work.My代码如下:Html Link

<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();
        });
    });
}

更改选项卡是在链接上单击两次完成的。一旦移动到下一个选项卡,然后它在一次单击时执行相同的工作,这是正确的方法。可能有人可以帮助我

2 个答案:

答案 0 :(得分:0)

问题是由于您在第一次点击链接后绑定更改侦听器/功能的方式,因此您必须再次单击它以触发新的单击绑定(顺便说一下,您&#39 ;当你第二次点击它时,还要添加另一个新的点击绑定。)

在您的代码示例中,您调用函数changetag,该函数将新的单击侦听器绑定到a标记。删除第二次单击绑定jQuery(this).click(function () {并立即启动单击应该可以使其正常工作。

例如:

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();
        });
    }
});

答案 1 :(得分: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();
  //     });
   });
}