4

我最近对仅使用 Javascript 和 jQuery 的工作申请进行了 30 分钟的测试。不必设计得很好或任何东西。我用 Javascript 和 jQuery 创建了一个非常基本的“30 分钟”页面,我认为它是“好的”。我只是想获得一些反馈,如果有更有效/更好的方法来做到这一点?事实证明,我没有得到这份工作.. 一直在学习,而且这份工作离我住的地方很远。

无论如何,给出的原始 HTML 页面如下,然后是我将基本 HTML 转换为基于选项卡的内容页面的谦虚尝试 - 再次在 30 分钟内。

<html>
<head>

<!-- stylesheet, javascript, etc. here -->

</head>
<body>

<h1>My Page</h1>

<h2 class="subheading">The first section</h2>
<div class="content">
    <p>Lorem ipsum...</p>
</div>

<h2 class="subheading">The second section</h2>
<div class="content">
    <img src="/some_image" alt="Image" title="Image"></img>
    <p>Some other text</p>
</div>

<h2 class="subheading">The third section</h2>
<div class="content">
    And some more text here
</div>


<div class="footer">
    This is at the foot of the page
</div>

</body>
</html>

好的,所以我的谦虚尝试如下:

<html>
<head>
    <title>Test JS page</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

    <style type="text/css">
        #tabs
        {
            width:457px;
            height:60px;
        }
        #tab1, #tab2, #tab3
        {
            width:150px;
            border:1px solid #ccc;
        }
        #tab1
        {
            float:left;
        }
        #tab3, #tab2
        {
            float:right;
        }
        #tab2_content, #tab3_content
        {
            display:none;
        }
        .clear
        {
            clear:both;
        }
        #content
        {
            height:300px;
        }

    </style>

    <script type="text/javascript">
    $(document).ready(function () {

        $('#tab1_link').click(function (e) {
            e.preventDefault();
            clearContent();
            $('#tab1_content').show();
        });

        $('#tab2_link').click(function (e) {
            e.preventDefault();
            clearContent();
            $('#tab2_content').show();
        });

        $('#tab3_link').click(function (e) {
            e.preventDefault();
            clearContent();
            $('#tab3_content').show();
        });

    });

    function clearContent() {
        $("div[id*='_content']").each(function() {
            $(this).hide();
        });
    }

    </script>

</head>

<body>

<h1>My Page</h1>

<div id="tabs">
    <div id="tab1"><a id="tab1_link" class="subheading">The first section</a></div>
    <div id="tab2"><a id="tab2_link" class="subheading">The second section</a></div>
    <div id="tab3"><a id="tab3_link" class="subheading">The third section</a></div>
</div>

<div class="clear">
</div>

<div id="content">

    <div id="tab1_content" class="content">
        <p>Lorem ipsum...</p>
    </div>

    <div id="tab2_content" class="content">
        <img src="/some_image" alt="Image" title="Image"></img>
        <p>Some other text</p>
    </div>

    <div id="tab3_content" class="content">
    And some more text here
    </div>    

</div>

<div class="footer">

This is at the foot of the page

</div>

</body>
</html>

如您所见,不太确定.. 样式表和脚本一样是内联的,但是这是一个测试,以显示您是否知道 Javascript/jQuery 足以执行任务.. 我认为它不是很棒,但也不算太糟糕..

我将不胜感激任何有关其他方法以达到预期结果的反馈。再次,它不必很漂亮,只是功能性..当然所有这些都在 30 分钟内..

谢谢!

4

3 回答 3

5
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">The First Section</a></li>
        <li><a href="#tabs-2">The Second Section</a></li>
        <li><a href="#tabs-3">The Third Section</a></li>
    </ul>
   <div id="tabs-1" class="content">
        <p>Lorem ipsum...</p>
   </div>

   <div id="tabs-2" class="content">
       <img src="/some_image" alt="Image" title="Image"></img>
   </div>

   <div id="tabs-3" class="content">
      <p>Some other text</p>
   </div>
</div>

<script>
   $(function() {
    $("#tabs").tabs();
   });
</script>

http://jqueryui.com/demos/tabs/

于 2012-06-09T14:44:18.287 回答
1

在不了解公司的情况下,您正在参加考试,因为很难说出他们在寻找什么。

一般来说,雇主不是在寻找完美的代码,而是在寻找解决问题的方式。例如,您可以说他们正在查看您是否会盲目地遵循他们的指示,或者坚持添加外部样式/脚本引用的约定和良好实践,或者只是干净、符合标准、简洁的代码。

我是一个完全的新手,所以请不要把我说的任何话都当回事,但我会尝试创建一些可重用的简洁代码,这些代码将/可以在维护友好的同时非常快速和轻松地重用和扩展(只是因为它的文本没有这并不意味着你可以忘记这些事情)。

只是这样做非常粗暴,而且我的头顶,但是像这样:

$('#tab-menu').click(function(e) {
   e.preventDefault();
   clearContent();
   $(this).show();
});

如果是一家涉及移动设备的公司,您可能希望绑定事件以便获得相同的功能。

我一直在做的事情是提供一个假设文档,即使它在记事本中也是如此。它总是被积极看待,因为它表明你正在停下来思考你必须做什么,而不是去开枪。

总的来说,我认为你做得很好!您的态度很好,只需从这些经验中学习,改进并变得更好!今天的晚辈就是明天的专家!如果我们足够努力

于 2012-06-09T14:39:25.777 回答
1

你不需要 jQuery UI。

演示http://jsbin.com/atogil/2/edit

HTML

<div class="tabs">
    <nav class="tab-btns">
        <a href="#tab1">tab btn 1</a>
        <a href="#tab2">tab btn 2</a>
        <a href="#tab3">tab btn 3</a>
        <a href="#tab4">tab btn 4</a>
    </nav>
    <div class="tab-contents">
        <div id="tab1">tab content 1</div>
        <div id="tab2">tab content 2</div>
        <div id="tab3">tab content 3</div>
        <div id="tab4">tab content 4</div>
    </div>
</div>

JS

$.fn.myTabs = function(settings){
  return this.each(function() {

/*
save cached version of the first elements inside the containers. 
by calling the first elements of each container you are not limitng 
the plugin user to any specific class or elememt.
*/
    var btns = $(settings.nav, this).children(),
        tabs = $(settings.tabs, this).children();


/* 
we relying on the order of the elements as the conection between 
the buttons and the tabs notice that .each() get the index of the btn..
we are useinf it to find the current tab.
*/

        btns.each(function(index){
            var btn = $(this),
                tab = tabs.eq(index);


            btn.click(function (e){
                /* prevent unnesscry work by checking 
                   if the button clicked is already active  */
                if(btn.is('.active')) return false;

                /* notice that first filter to find the last 'active' 
                   button before we remove the 'active' class  otherwise it 
                   remove the class for every button. 
                   unnesscry work prevented again */
                btns.filter('.active').removeClass('active');

                /* hide previus tab.. */
                tabs.filter(':visible').hide();

                btn.addClass('active');
                tab.show();


                return false;
            });
        });

        // emulate click on the first tab button;
        btns.first().click();
  });
};

并像这样调用你的脚本;

$(function() {

  $('.tabs').myTabs({
    // container of navigation inside '.tabs'
    nav : '.tab-btns',
    // container of contents inside '.tabs'
    tabs : '.tab-contents'
  });

});
于 2013-01-11T20:01:03.943 回答