jQuery: ошибка при нажатии кнопки "LI" - PullRequest
0 голосов
/ 01 июля 2010

У меня проблема с jquery: при щелчке функции "li" различные версии работают по-разному. Вот HTML-код.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>

<style>
html,body{
 font: 90% arial, tahoma, verdana #333 normal;
 margin:0;
 padding:0;
}
#treeDiv
{
 width:250px;
 background-color:#C4E4EE;
 border:#6BB8DC solid 1px;
 margin:10px;
}
ul#jQtree{
 list-style-type:none;
 margin:10px;
 padding:0;
 background-color:#fff;
}
ul#jQtree li
{
 padding:5px 10px 5px;
 border:#CCC solid 1px;
}
ul#jQtree li label
{
 background-color:#666;
 color:#fff;
}

</style>

<script type="text/javascript">

 $(document).ready(function(){
  //on mouseover of li, change cursor to hand
  $('#jQtree li').hover(function(){ $(this).css({'cursor':'hand'})});

  //on click of li, if there are subnodes for it, hide it.
  $('#jQtree li').click(function(event){
   if(event.target.nodeName == "LI" && $(event.target).children('ul').length > 0){
    $(this).children('ul').slideToggle("200");
   }
  });

 });

</script>
</head>

<body>
<div id="treeDiv">
<ul id="jQtree">
 <li>
     <label>Main Node</label>
        <ul>
         <li><label>Sub Node 1</label></li>
            <li><label>Sub Node 2</label></li>
            <li><label>Sub Node 3</label></li>
            <li><label>Sub Node 4</label></li>
        </ul>
    </li>
</ul>
</div>
</body>
</html>

Я написал только функцию jquery onclickдля "LI", имеющих детей "UL". он работает в ie8, даже в ie7, но разница в том, что щелчок внутри "LI" только он работает в ie8, тогда как в ie7, щелчок снаружи "LI" также работает .И, наконец, в ie6, курсор мигает, и иногда он становится рукой, а затем вы должны нажать, иначе он не будет работать .Кто-нибудь может мне помочь исправить эту проблему во всех то есть версиях .какой взлом ???Кто-нибудь, пожалуйста, направьте меня, чтобы это сработало ..

1 Ответ

0 голосов
/ 01 июля 2010

Вы можете сделать этот метод клика гораздо более читабельным:

$('#jQtree li').click(function(ev) {
    if (this.children('ul').length > 0) {
        this.children('ul').slideToggle(200); // note that I changed the type
    }
}

Кроме того, .hover() принимает две функции в качестве аргументов - одну для наведения мыши и одну для наведения мыши. Если вы не хотите, чтобы с мышью ничего не происходило, вам, вероятно, следует добавить пустую функцию, но, скорее всего, вы хотите сделать следующее:

$('#jQtree li').hover(
    function() { this.css('cursor':'pointer'); },
    function() { this.css('cursor':'default'); }
);

В качестве примечания: предоставленный вами обработчик при наведении курсора будет выполняться при обоих входе и выходе, что будет всегда держать курсор указателем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...