2013-05-22 52 views
1

我與引導工作,並試圖製造標籤1的「激活」按鈕(開關)選項卡2.這個JavaScript函數爲什麼不起作用?

這裏是我的代碼:

HTML導航標籤:

<ul id="pageSwitcher" class="nav nav-tabs" style="width:100%;"> 
     <li><a href="#page1" data-toggle="tab">Page One</a></li> 
     <li><a href="#page2" data-toggle="tab">Page Two</a></li> 
    </ul> 

HTML標籤內容:

<div class="tab-content" style="width:100%;"> 
    <div class="tab-pane active" id="page1"> 
     <button type="button" onclick="showPageTwo();">Proceed to page 2</button> 
    </div> 
    <div class="tab-pane" id="page2"> 
     <p>Page 2 content here!</p> 
    </div> 
</div> 

的JavaScript:

<script type="text/javascript"> 

$(document).ready(function() { 
    $('#myTab a').click(function (e) { 
     e.preventDefault(); 
     $(this).tab('show'); 
    } 
}); 

function showPageTwo() { 
    $('#pageSwitcher li:eq(1) a').tab('show'); 
} 

</script> 

任何人都願意提供一些見解,我究竟在哪裏出錯?我已經幾乎完全複製了幾個例子... 點擊標籤本身工作正常,我似乎無法在第1頁底部激活頁面2的按鈕。

+0

什麼是不工作? – karthikr

+0

您的.click()中的語法錯誤...見下面... –

回答

2

一:不好的形式,內嵌的onclick調用...你不需要它,擺脫它:

 <button type="button">Proceed to page 2</button> 

二:你有兩個JS錯誤。您沒有關閉您的.click()函數,並且您嘗試使用li的說明符觸發第一個選項卡:eq(0)...

$(document).ready(function() { 
    $('#myTab a').click(function (e) { 
     e.preventDefault(); 
     $(this).tab('show'); 
     // ALSO, you were missing a closing paren, here! 
    }); 

    //two issues ... onclick inside your button is trying to access 
    // your function before it's available... inline js like that, bad idea anyhow 
    // so hook into it inside your DOM ready code here anyhow. 

    var showPageTwo = function() { 
     // secondly, you're looking at the wrong item! 
     // li:eq(0) means "look at the first li in the array of li" 
     $('#pageSwitcher li:eq(1) a').tab('show'); 
    }; 

    $(".tab-content").on("click","#page1 button", showPageTwo); 
}); 

看到這個的jsfiddle的工作例如:http://jsfiddle.net/mori57/Xr9eT/

+0

完美! +1真正解釋我的錯誤。現在我明白了。謝謝!另外:derp @瞄準錯誤的li元素......大聲笑! –

+0

我實際上建議看@ adeneo使用.trigger()而不是.tab('show')的例子,除非Bootstrap文檔專門用這種方式調用它。 .trigger()應該啓動其他元素可能正在等待的任何事件中的泡沫,因此如果發現任何異常情況,請嘗試使用該方法來查看它是否爲您解決任何異常值。 –

-1

showPageTwo()should在document.ready()調用之外聲明。

1

給您的按鈕的ID:

<div class="tab-content" style="width:100%;"> 
    <div class="tab-pane active" id="page1"> 
     <button type="button" id="myButton">Proceed to page 2</button> 
    </div> 
    <div class="tab-pane" id="page2"> 
     <p>Page 2 content here!</p> 
    </div> 
</div> 

,只是觸發右側被定位點擊,引導沒有休息:

$(document).ready(function() { 
    $('#myTab a').on('click', function(e) { 
     e.preventDefault(); 
     $(this).tab('show'); 
    }); 

    $('#myButton').on('click', function() { 
     $('.nav-tabs li:eq(1) a').trigger('click'); 
    }); 
}); 
+0

我們都錯過了最明顯的錯誤...他沒有在(myTab a).click()後關閉他的父母...... –

+0

@ mori57 - 好眼睛,根本沒有注意到。 – adeneo

+0

我也沒有,直到我試圖讓js找到它,並在控制檯中看到奇怪的東西。 :) –

0

你不應該使用特定的代碼爲您的按鈕,但一般事件驅動的過程:
- 你應該將屬性添加到您的按鈕以指定朝向頁面會重定向
- 再附上一個click事件
- 附加點擊事件選項卡,做同樣的

HTML:

<button type="button" id="btn" gotoPage="#page2">Proceed to page 2</button> 

JS處理標籤切換:

function showPage(pageId){ 
    $('.tab-pane').each(function(){ 
     $(this).removeClass('active'); 
     $(this).hide(); 
    }); 
    $(pageId).show(); 
    $(pageId).addClass('active'); 
} 

(不知道你需要使用顯示或隱藏功能,如果你的CSS管理這就是得益於主動類)

然後爲您的按鈕:

$('#btn').click(function(){ 
    var destPage = $(this).attr('gotoPage'); 
    showPage(destPage); 
}); 

對於標籤:

$('#pageSwitcher a').each(function(){ 
    $(this).click(function(e){ 
     showPage($(this).attr('href')); 
    }); 
}); 

,如果需要,你可以在啓動時加載一個頁面,:

$(document).ready(function(){ 
    showPage("#page1"); // default: load page 1 
}); 

例子:http://jsfiddle.net/DSbrj/1/

相關問題