2010-07-05 2 views
0

Я хочу изменить цвет магазина x, когда нахожусь на коробке X и наоборот.селекторы с переменными

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
<script> 

$(document).ready(function(){ 
    $("#c1").hover(function(){ 
    $("[id='gp1']").attr("bgcolor","#FF0000"); 
    }, function(){ 
    $("[id='gp1']").attr("bgcolor","#FFFFFF"); 
    } 
); 
    $("#c2").hover(function(){ 
    $("[id='gp2']").attr("bgcolor","#0000FF"); 
    }, function(){ 
    $("[id='gp2']").attr("bgcolor","#FFFFFF"); 
    } 
); 
    $("#c3").hover(function(){ 
    $("[id='gp3']").attr("bgcolor","#FFFF00"); 
    }, function(){ 
    $("[id='gp3']").attr("bgcolor","#FFFFFF"); 
    } 
); 
    $("#c4").hover(function(){ 
    $("[id='gp4']").attr("bgcolor","#00FF00"); 
    }, function(){ 
    $("[id='gp4']").attr("bgcolor","#FFFFFF"); 
    } 
); 
     $('*[class^=s]').hover(function(){ 
     var group=$(this).attr("id"); 
     var classname=$(this).attr("class"); 
     var $jqname="$(\"[class=\'" + classname + "\']\")" 
     alert(group); 
     alert(classname); 
     alert($jqname); 
     var colour; 
     if(group="gp1"){ 
     colour="#FF0000" 
     $jqname.attr("bgcolor","#FFFF00"); 
     }else if(group="gp2"){ 
     colour="#0000FF" 
     $jqname.attr("bgcolor","#FFFF00"); 
     }else if(group="gp3"){ 
     colour="#FFFF00" 
     $jqname.attr("bgcolor","#FFFF00"); 
     }else{ 
     colour="#00FF00" 
     $jqname.attr("bgcolor","#FFFF00"); 
     } 
    }, function(){ 
    $jqname.attr("bgcolor","#FFFFFF"); 
    } 
); 
}); 

</script> 
<meta http-equiv="Content-Type" content="text/html; charset=big5"> 
<title>Document</title> 
<style type="text/css"> 
<!-- 

td {font-size: 24px; font-family: Arial, Helvetica, sans-serif; } 
--> 
</style> 
</head> 

<body> 
<table width="565" height="126" border="1"> 
    <tr> 
    <td id="gp1" class="s1">1</td> 
    <td id="gp2" class="s2">2</td> 
    <td id="gp4" class="s3">3</td> 
    <td id="gp3" class="s4">4</td> 
    </tr> 
    <tr> 
    <td id="gp4" class="s5">5</td> 
    <td id="gp1" class="s6">6</td> 
    <td id="gp2" class="s7">7</td> 
    <td id="gp3" class="s8">8</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s9">9</td> 
    <td id="gp2" class="s10">10</td> 
    <td id="gp4" class="s11">11</td> 
    <td id="gp1" class="s12">12</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s13">13</td> 
    <td id="gp4" class="s14">14</td> 
    <td id="gp2" class="s15">15</td> 
    <td id="gp1" class="s16">16</td> 
    </tr> 
</table> 
<p>&nbsp;</p> 
<table width="260" height="64" border="1"> 
    <tr> 
    <td width="119" height="29" bgcolor="#FF0000" id="c1">Category 1</td> 
    <td width="125" bgcolor="#0000FF" id="c2">Category 2</td> 
    </tr> 
    <tr> 
    <td height="27" bgcolor="#FFFF00" id="c3">Category 3</td> 
    <td bgcolor="#00FF00" id="c4">Category 4</td> 
    </tr> 
</table> 
<table width="500" height="175" border="1"> 
    <tr> 
    <td id="gp1" class="s1">Shop1</td> 
    <td id="gp2" class="s2">Shop2</td> 
    <td id="gp4" class="s3">Shop3</td> 
    <td id="gp3" class="s4">Shop4</td> 
    </tr> 
    <tr> 
    <td id="gp4" class="s5">Shop5</td> 
    <td id="gp1" class="s6">Shop6</td> 
    <td id="gp2" class="s7">Shop7</td> 
    <td id="gp3" class="s8">Shop8</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s9">Shop9</td> 
    <td id="gp2" class="s10">Shop10</td> 
    <td id="gp4" class="s11">Shop11</td> 
    <td id="gp1" class="s12">Shop12</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s13">Shop13</td> 
    <td id="gp4" class="s14">Shop14</td> 
    <td id="gp2" class="s15">Shop15</td> 
    <td id="gp1" class="s16">Shop16</td> 
    </tr> 
    <tr> 

    </tr> 
</table> 
<p>&nbsp;</p> 
</body> 
</html> 
+1

Если это ваша домашняя работа, вы должны сделать это самостоятельно. Вы даже пробовали? – Marks

+1

Кроме того, ваша срочность не является неотложной задачей для всех остальных. Поэтому вы не должны писать СРОЧНО в жирных столицах в свое название вопроса - люди не помогут вам быстрее. Я подозреваю, что у вас было достаточно времени для вашей домашней работы, которую вы просто решили потратить иначе, что на самом деле не помогает вашему делу. ;-) – Tomalak

+0

Извините, но я пробовал это в течение недели. Я пробовал googleing и пробовал много разных кодов, но ни один из них не был хорош, поэтому я пришел сюда за помощью. Я действительно срочный, но если я рассержу вас, я прошу прощения за это. – mickey159

ответ

0

Поскольку это домашнее задание, я не дам вам полный код. Тем не менее, чтобы дать вам представление о том, как вы можете использовать идентификаторы в селекторов (это на самом деле просто о конкатенации строк), я покажу вам, как вы можете объединить все ваши #c1... #c4 при наведении курсора мыши функции в только этом:

function bgColorLookup(id) { 
    var colors = ["#FF0000", "#0000FF", "#FFFF00", "#00FF00"]; 
    return colors[id]; 
} 

$(".category").hover(function(){ 
    var id = $(this).attr('id').substring(1); 
    $("[id=gp" + id + "]".attr(bgcolor, bgColorLookup(id)); 
}, function() { 
    $("[id=gp" + $(this).attr('id').substring(1) + "]".attr(bgcolor, '#FFFFFF'); 
}); 

Для простота, я предположил класс «категория» для c1 - c4, но вы могли бы также хорошо записать селектор как "#c1,#c2,#c3,#c4".

В качестве другого намека, вы можете иметь более одного класса на элементе, скажем class="shop s1", а затем еще один элемент с class="shop s2", так что вы можете сделать $('.shop') вместо $('*[class^=s]')

0

Для начала у вас есть несколько элементов на странице с тем же идентификатором. Идентификаторы элементов должны быть уникальными. Даже если вы правильно поняли свою логику, это не сработает. Вам было бы лучше исключить идентификаторы целиком и использовать классы: один класс для магазина и один для категории, хотя кажется, что вы можете сделать часть магазина позиционно - рассчитать строку/столбец в таблице и выделить ту же строку/column в другой таблице. Однако классы были бы проще. Вы также можете использовать идентификаторы для фактических столбцов магазина, которые соответствуют классу для селектора магазина.

Обратите внимание, что я бы использовал классы CSS, чтобы сделать выделение, а не напрямую изменять CSS на элементе. Это упростит сброс цветов на любые ранее выделенные элементы.

<style type="text/css"> 
.highlight { background-color: #FFFF00; } 
</style> 

$('.shop-selector').hover(function() { 
     $('.shop').removeClass('highlight'); 
     var shop = $(this).attr('class').replace('/\s*\.shop-selector\s*/',''); 
     $('#' + shop).addClass('highlight'); 
    }, 
    function() { 
     var shop = $(this).attr('class').replace('/\s*\.shop-selector\s*/',''); 
     $('#' + shop).removeClass('highlight'); 
    } 
}); 

Тогда столбцы столбцов селектора выглядят.

<td class="shop-selector shop1">1</td> 
<td class="shop-selector shop2">2</td> 

и ваш магазин колонки как

<td id="shop1" class="shop">Shop 1</td> 
<td id="shop2" class="shop">Shop 2</td> 

Для вашей категории, вы должны сделать классы групповых идентификаторов, а сделать что-то подобное.

Смежные вопросы