парение jQuery и селектор класса

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
25
задан Termininja 17 December 2016 в 11:59
поделиться

9 ответов

Ваш код выглядит хорошо мне.

Удостоверяются, что DOM готов, прежде чем Ваш JavaScript будет выполнен при помощи $ jQuery (обратный вызов) функция:

$(function() {
   $('.menuItem').hover( function(){
      $(this).css('background-color', '#F00');
   },
   function(){
      $(this).css('background-color', '#000');
   });
});
52
ответ дан foxy 28 November 2019 в 17:40
поделиться

Я предложил бы не использовать JavaScript для этого вида простого взаимодействия. CSS способен к выполнению его (даже в Internet Explorer 6), и это будет намного более быстро реагирующим, чем выполнение его с JavaScript.

можно использовать ": толпитесь" псевдокласс CSS, но чтобы заставить его работать с Internet Explorer 6, необходимо использовать его на "a" элементе.

.menuItem
{
    display: inline;
    background-color: #000;

    /* width and height should not work on inline elements */
    /* if this works, your browser is doing the rendering  */
    /* in quirks mode which will not be compatible with    */
    /* other browsers - but this will not work on touch mobile devices like android */

}
.menuItem a:hover 
{
    background-color:#F00;
}
29
ответ дан Community 28 November 2019 в 17:40
поделиться

Это может быть достигнуто в CSS с помощью: псевдокласс при наведении курсора. (: парение не работает над <div> с в IE6)

HTML:

<div id="menu">
   <a class="menuItem" href=#>Bla</a>
   <a class="menuItem" href=#>Bla</a>
   <a class="menuItem" href=#>Bla</a>
</div>

CSS:

.menuItem{
  height:30px;
  width:100px;
  background-color:#000;
}
.menuItem:hover {
  background-color:#F00;
}
9
ответ дан foxy 28 November 2019 в 17:40
поделиться

test.html

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>jQuery Test</title>
        <link rel="stylesheet" type="text/css" href="test.css" />
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="test.js"></script>
    </head>
    <body>
        <div id="menu">
            <div class="menuItem"><a href=#>Bla</a></div>
            <div class="menuItem"><a href=#>Bla</a></div>
            <div class="menuItem"><a href=#>Bla</a></div>
        </div>
    </body>
</html>

Работы test.css

.menuItem
{

    display: inline;
    height: 30px;
    width: 100px;
    background-color: #000;

}

test.js

$( function(){

    $('.menuItem').hover( function(){

        $(this).css('background-color', '#F00');

    },
    function(){

        $(this).css('background-color', '#000');

    });

});

:-)

5
ответ дан okoman 28 November 2019 в 17:40
поделиться

Так как это - меню, могло бы также взять его к следующему уровню, и очистить HTML и сделать его более семантическим при помощи элемента списка:

HTML:

  <ul id="menu">
    <li><a href="#">Bla</a></li>
    <li><a href="#">Bla</a></li>
    <li><a href="#">Bla</a></li>
  </ul>

CSS:

#menu {
  margin: 0;
}
#menu li {
  float: left;
  list-style: none;
  margin: 0;
}
#menu li a {
  display: block;
  line-height:30px;
  width:100px;
  background-color:#000;
}
#menu li a:hover {
  background-color:#F00;
}
5
ответ дан Victor Bjelkholm 28 November 2019 в 17:40
поделиться

На стороне отмечают, что это более эффективно:

$(".menuItem").hover(function(){
    this.style.backgroundColor = "#F00";
}, function() {
    this.style.backgroundColor = "#000";
});
2
ответ дан Sugendran 28 November 2019 в 17:40
поделиться

Я предпочитаю ответ foxy, потому что мы никогда не должны использовать JavaScript, когда существующий css, свойства сделаны для задания.

не забывают добавлять display: block ; в .menuItem, таким образом, высота и ширина приняты во внимание.

редактирование: для лучше script/look& чувствуйте разъединение, если бы когда-нибудь необходимо изменять стиль через jQuery, я определил бы дополнительный css класс и использование $(...).addClass("myclass") и $(...).removeClass("myclass")

1
ответ дан vincent 28 November 2019 в 17:40
поделиться

Я просто кодировал пример в jQuery о том, как создать оверлейные программы отделения по переключателям для создания компактного, интерактивного, но простого плагина выбора цвета для jQuery

http://blarnee.com/wp/jquery-colour-selector-plug-in-with-support-for-graceful-degradation/

0
ответ дан 28 November 2019 в 17:40
поделиться

Всегда делайте все просто и легко, создав class

.bcolor{ background:#F00; }

THEN USE THE addClass() & removeClass() to finish it up

.
0
ответ дан 28 November 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: