2011-08-16 81 views
0

在@Joseph的幫助下,我設法創建了這個腳本,它的工作方式與我想在jsfiddle上完全一樣。但是,當我在網頁上使用完全相同的腳本時,它不會執行任何操作,它會忽略if和else內部的腳本,並像普通單選按鈕那樣工作。我沒有收到任何錯誤消息,我正在使用:腳本工作在jsfiddle,但不是在我的網頁jquery

http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js 
http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js 

我能想到的唯一的事情是它不能使用「this」嗎?我將如何解決這個問題?

我的腳本,可以發現:
http://jsfiddle.net/pJgyu/15013/

jQuery(document).ready(function() 
{ 
    $("input[type='radio']").click(function(){ 
    var $knapp = $(this).val();  

    if(($knapp=='1c') || ($knapp=='2c')|| ($knapp=='3c')) { 
     this.checked = true; 
    }else{ 
     $("input[type='radio']."+this.className).not($(this)).each(function(){ 
      this.checked = false; 
     }); 
    } 
}); 
}); 

<table> 
<tr> 
<td>1</td> 
<td><input type="radio" class="ljudkalla_1" name="ljudkalla_1" value="1a"></td> 
<td><input type="radio" class="ljudkalla_2" name="ljudkalla_1" value="1b"></td> 
<td><input type="radio" class="ljudkalla_3" name="ljudkalla_1" value="1c"></td> 
</tr> 
<tr> 
<td>2</td> 
<td><input type="radio" class="ljudkalla_1" name="ljudkalla_2" value="2a"></td> 
<td><input type="radio" class="ljudkalla_2" name="ljudkalla_2" value="2b"></td> 
<td><input type="radio" class="ljudkalla_3" name="ljudkalla_2" value="2c"></td> 
</tr> 
<tr> 
<td>3</td> 
<td><input type="radio" class="ljudkalla_1" name="ljudkalla_3" value="3a"></td> 
<td><input type="radio" class="ljudkalla_2" name="ljudkalla_3" value="3b"></td> 
<td><input type="radio" class="ljudkalla_3" name="ljudkalla_3" value="3c"></td> 
</tr> 
</table> 
+1

而[this](http://www.downforeveryoneorjustme.com/jsfiddle.net)就是爲什麼你應該在**問題中包含代碼**,而不是在外部鏈接它。 – Matt

+0

對不起,問題已經更新 – user626342

+0

使用螢火蟲/鉻開發工具欄 - 並顯示錯誤/輸出 – NimChimpsky

回答

0

我覺得this是你所追求的,對不對?這在你的本地機器上工作嗎?

$("input").click(function() { 
    if (this.className.indexOf('3') === -1) { 
     $("input." + this.className).not($(this)).each(function() { 
      this.checked = false; 
     }); 
    } 
}); 
+0

很好,但沒有它不能在本地工作,但它在jsfiddle中正常工作。我現在試圖用螢火蟲進行調試 – user626342

+0

我想說,感謝大家幫助我,但不幸的是我無法在我的網站上工作。我將不得不嘗試找到不使用jquery的不同解決方案。 – user626342

+0

它似乎很奇怪,它適用於jsFiddle,但不是在你的機器上。所有文件是否正確下載(Firebug的Net標籤中沒有紅線)? Firebug控制檯是否顯示任何錯誤?我建議不要放棄jQuery,在您的本地機器上沒有理由不適合您,並且您會發現使用它跨瀏覽器兼容的腳本更容易。您是指Google CDN上託管的jQuery版本還是本地文件? – GregL

1

您包括jQuery的兩倍。一種是minified版本,由min.js表示。你只需要其中一個庫。我建議使用縮小版來節省帶寬。

+0

好的謝謝,改變了它,但仍然是 – user626342

1

這看起來像是HTML中的一個錯誤,因爲它在從頭開始創建HTML時在本地工作。

您還可以嘗試使用Firebug或Safari或Chrome的調試器來調試您的版本。在代碼中放置一個斷點,然後在控制檯中手動嘗試jQuery選擇器可以幫助發現大多數問題。

這一個工程:

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script> 
<script type="text/javascript"> 
jQuery(document).ready(function() 
{ 
    $("input[type='radio']").click(function(){ 
    var $knapp = $(this).val();  

    if(($knapp=='1c') || ($knapp=='2c')|| ($knapp=='3c')) { 
     this.checked = true; 
    }else{ 
     $("input[type='radio']."+this.className).not($(this)).each(function(){ 
      this.checked = false; 
     }); 
    } 
}); 
}); 

</script> 
</head> 

<body> 

<table> 
<tr> 
<td>1</td> 
<td><input type="radio" class="ljudkalla_1" name="ljudkalla_1" value="1a"></td> 
<td><input type="radio" class="ljudkalla_2" name="ljudkalla_1" value="1b"></td> 
<td><input type="radio" class="ljudkalla_3" name="ljudkalla_1" value="1c"></td> 
</tr> 
<tr> 
<td>2</td> 
<td><input type="radio" class="ljudkalla_1" name="ljudkalla_2" value="2a"></td> 
<td><input type="radio" class="ljudkalla_2" name="ljudkalla_2" value="2b"></td> 
<td><input type="radio" class="ljudkalla_3" name="ljudkalla_2" value="2c"></td> 
</tr> 
<tr> 
<td>3</td> 
<td><input type="radio" class="ljudkalla_1" name="ljudkalla_3" value="3a"></td> 
<td><input type="radio" class="ljudkalla_2" name="ljudkalla_3" value="3b"></td> 
<td><input type="radio" class="ljudkalla_3" name="ljudkalla_3" value="3c"></td> 
</tr> 
</table> 

</body> 
</html> 
+0

+1是的我找到了同樣的東西。沒有問題本地或在鏈接jsFiddle – andyb

相關問題