JQuery скрыть div - в результате ошибки JavaScript - PullRequest
0 голосов
/ 18 января 2010

У меня есть следующий HTML-код на странице:

<head>
<script src="jquery-1.3.2.min.js" type="text/javascript"></script>    
<script>
        function hideIt() {
            $(this).hide("slow");
            return true;
        }         
    </script>
</head>
<body>
<div onclick="hideIt();">
         hello world
    </div>
</body>

Когда я нажимаю на div, это приводит к следующей ошибке JavaScript:

Линия: 53 Ошибка: 'this [...]. Style' имеет значение null или не является объектом

Какие-нибудь решения?

Ответы [ 5 ]

1 голос
/ 18 января 2010

this относится к текущему объекту. Чтобы ваш код работал, вы должны передать ссылку на элемент div, передав this внутрь вызова функции.

Основным преимуществом использования jQuery является разделение разметки и скрипта. Так что вы не будете писать обработчики событий внутри разметки. Вы можете писать обработчики событий только после того, как DOM будет готов.

<head>
    <script src="jquery-1.3.2.min.js" type="text/javascript"></script>    
    <script>
        $(function(){
            $("#divToHide").click(function(){
                $(this).hide();
            });
        });        
    </script>
    </head>
    <body>
    <div id="divToHide">
             hello world
        </div>
    </body>

Подробное чтение по Ненавязчивый JavaScript

1 голос
/ 18 января 2010

Нет определения для this объекта в этой области.Вместо этого используйте селекторы:

<div class="ready_to_hide">
     hello world
</div>

$('.ready_to_hide').click(function(){
   $(this).hide();
});
0 голосов
/ 18 января 2010

Попробуйте это:

<script>
    function hideIt(item) {
        $(item).hide("slow");
        return true;
    }         
</script>

<div onclick="hideIt(this);">
     hello world
</div>
0 голосов
/ 18 января 2010

$(this) будет вашим DIV, только если вы связываете событие с помощью jQuery:

$('#myDiv').click(hideIt);

Как вы это делаете, вам нужно передать ссылку на объект:

<div onclick="hideIt(this);">

и используйте это в своей функции:

    function hideIt(obj) {
        $(obj).hide("slow");
        return true;
    } 
0 голосов
/ 18 января 2010

Это должно исправить

<div onclick="hideIt(this);">

и

function hideIt(o) {
            $(o).hide("slow");
            return true;
        }     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...