需要帮助将这段代码转换为jQuery

需要帮助将这段代码转换为jQuery

问题描述:

这里的任何jQuery专家都可以帮助我将follwing javascript代码转换为jQuery吗?虽然它的作品,我宁愿看怎么样了它的使用jQuery做需要帮助将这段代码转换为jQuery

function loadit(element) 
{ 
    document.getElementById('container').src = element.rel; 
    var tabs = document.getElementById('tabs').getElementsByTagName("a"); 

    for (var i=0; i < tabs.length; i++) 
    { 
     if(tabs[i].rel == element.rel) 
     { 
      tabs[i].className = "selected"; 
     } 
     else 
     { 
      tabs[i].className = ""; 
     } 
    } 
} 

下面是HTML

<div id="tabs"> 
       <ul> 
       <li><a href="#" rel="/root/a" onClick="loadit(this)" class="selected">A</a></li> 
       <li><a href="#" rel="/root/b" onClick="loadit(this)">B</a></li> 
       <li><a href="#" rel="/root/c" onClick="loadit(this)">C</li> 
       </ul> 
     </div> 
<iframe id="container" name="container"></iframe> 

,这里是我如何填充在windowload容器:

function startit() 
{ 
    var tabs = document.getElementById('tabs').getElementsByTagName("a"); 
    document.getElementById('container').src = tabs[0].rel; 
} 

window.onload=startit; 
+3

当然:http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery – nnnnnn 2012-03-02 11:35:43

假设(element)传递的参数本身是一个jQuery对象,它可以这个样子。

注意,如果ii'm处理一个jQuery对象,我倾向于$前缀的变量来区分它

function loadit($element) 
{ 
    var rel = $element.prop('rel'); 
    $('#container').prop('src',rel); 
    $('#tabs a').each(function(){ 
     var $a = $(this); 
     $a.toggleClass('selected',$a.prop('rel') == rel); 
    }); 
} 

编辑:我注意到一个错字在我上面的代码。我是从线

$('#tabs a').each(function(){ 

这里缺少#是代替你的HTML的一个非常简化的活生生的例子:http://jsfiddle.net/FKf9L/1/

伊夫假设你点击a的之一,当调用loadit这形成标签。如果这种情况有点多余,您应该锁定jQuery中的a的点击事件。使得代码:

$('#tabs a').click(function(){ 
    var $this = $(this); 
    var rel = $this.attr('rel'); 
    $('#container').prop('src',rel); 
    $this.siblings().removeClass('selected'); 
    $this.addClass('selected'); 
}); 

请参见本活生生的例子:http://jsfiddle.net/p99Q2/

EDIT2:你可能也与startit方法做掉,只是发出的选项卡中的第一a一个click

​​

活生生的例子:http://jsfiddle.net/p99Q2/2/

+0

我无法浏览使用此代码的标签,它被卡在第一个 – Joly 2012-03-02 11:57:07

+0

@Joly - 在原始问题中提供一个HTML示例,我会看看有关在jsfiddle上为你工作的实例。 – Jamiec 2012-03-02 11:59:16

+0

谢谢!我已经加了 – Joly 2012-03-02 12:01:22

这是非常基本的。在15分钟内阅读jQuery教程应该教会你足够在另外15分钟内完成这个任务。

+0

这就好像半个小时的时候浪费了,而当*几乎是实时的时候;) – mindandmedia 2012-03-02 11:41:16

这么多的方法来做到这一点。这是使用更多的jQuery结构。

function loadit(element) 
{ 
    $('#container')[0].src = element.rel; 
    $('#tabs a').each(function(idx){ 
     var tab = $(this); 
     tab.attr('class',''); 
     if(tab.rel == element.rel) 
     { 
     tab.attr('class','selected'); 
     } 
    } 
} 
+0

我只是在这里添加这个,导致几乎所有人都搞错了:看看原始代码:'if(condition)class =''或class ='selected''。他没有添加或切换或删除任何东西(因为我们不能假设它在那里) – mindandmedia 2012-03-02 11:48:54

+0

这一个不起作用,因为我没有收到“容器”内的数据,也无法浏览标签 – Joly 2012-03-02 11:55:55

function loadit(element) { 

    var rel = element.rel; 

    $("#container").attr("src") = rel; 
    var $tabs = $("#tabs a"); 

    $tabs.each(function() { 
     var $tab = $(this); 

     $tab.removeClass("selected"); 

     if ($tab.attr("rel") == rel) { 
     $tab.addClass("selected"); 
     } 
    }); 
} 
+0

在这里相同:他没有添加类,他正在取代class-attr值 – mindandmedia 2012-03-02 11:47:08