2013-02-15 105 views
0

我确实存在使代码正确的问题。我想我的知识还不足以把它整理出来,所以我想问你们其中一位可能会好好修复我的代码。JQuery问题:显示隐藏的对象

所以我想实现:http://jsfiddle.net/yHHFJ/

$('[class^=is]').hide(); 
$("#select_2").change(function(){   
var value = $("#select_2 option:selected").val(); 
var theDiv = $(".is" + value); 

theDiv.slideDown(); 
theDiv.siblings('[class^=is]').slideUp(); 
}); 

var $j = jQuery.noConflict(); 
function changesizedropdown(size){ 
var option = size; 
var select = document.getElementById("select_2"); 
var opt, o = 0; 
while (opt = select[o++]){ 
if (opt.value == option){ select.selectedIndex = o - 1; } 
} 
} 

$j(document).ready(function() { 

var swatch =''; 
$j('#sizebox:eq(0) option').each(function() {swatch = swatch + "<li> <a href='javascript:void(0)' onclick='changesizedropdown(&amp;quot;"+ $j(this).val() +"&amp;quot;);'>" + $j(this).text() + "</a></li>"}); 
var sizeswatchhtml = "<div class='size'><div style='float: left; margin: 6px 5px 0px 0px;'>SELECT SIZE : </div><div style='float: left; margin: 0pt 7px 0px 13px;'><ul>"+ swatch + " </ul></div></div>"; 
document.getElementById('sizeswatch').innerHTML = sizeswatchhtml; 

}); 

我有与我好不容易才显示为单独的DIV S M L尺寸的选择和选项下拉菜单。当我点击S(显示小),M(显示中)或L(显示大)时应该显示隐藏的DIV(小,中,大),但他们没有出现,我正在努力制作对的。

你能帮我吗?

非常感谢您的帮助。

+0

我无法理解您的脚本的逻辑。我觉得它是开销很大 – Alexander 2013-02-15 23:49:36

回答

1

我已经对你的脚本做了一些小的改动,现在好像工作正常。

<script> 

var $j = jQuery.noConflict(); 
$j('[class^=is]').hide(); 


$j("#select_2").change(function(){   
process(); 
}); 
function process() 
{ 
var value = $j("#select_2 option:selected").val(); 
var theDiv = $j(".is" + value); 
theDiv.slideDown(); 
theDiv.siblings('[class^=is]').slideUp(); 
} 
function changesizedropdown(size){ 
var option = size; 
var select = document.getElementById("select_2"); 
var opt, o = 0; 
while (opt = select[o++]){ 
if (opt.value == option){select.selectedIndex = o - 1; process();} 
} 
} 

$j(document).ready(function() { 

var swatch =''; 
$j('#sizebox:eq(0) option').each(function() { 
swatch = swatch + "<li> <a href='javascript:void(0)' onclick='changesizedropdown(\""+  $j(this).val() +"\");'>" + $j(this).text() + "</a></li>"}); 
var sizeswatchhtml = "<div class='size'><div style='float: left; margin: 6px 5px 0px 0px;'>SELECT SIZE : </div><div style='float: left; margin: 0pt 7px 0px 13px;'><ul>"+ swatch + " </ul></div></div>"; 
document.getElementById('sizeswatch').innerHTML = sizeswatchhtml; 

}); 

第一个变化是,我已经使用\”的地方& QUOT的,因为它是给错误

第二个变化是,你被改变的选择标志后还是一样。下拉列表中,其变化事件并未被解雇,所以我已经从函数changesizedropdown本身明确地调用了它。

第三个变化是我已经写了noconflict语句而且使用了$ j inplace of $ every哪里。

谢谢。

+0

谢谢你gaurav。我把你的代码放在jsfiddle和我的html中,但它似乎不工作。当我点击S,M或L时,没有像以前那样发生任何事情。你可以请尝试修改jsfiddle代码,看看有什么不对? – qqruza 2013-02-16 08:12:47

+0

我得到的错误是 - 找不到变量:JQuery – qqruza 2013-02-16 08:15:35

+1

道歉gaurav。你的代码运行良好。这是我的错误。非常感谢。 – qqruza 2013-02-16 09:00:04