2015-05-21 2 views
0

Я пытаюсь отключить событие click от нескольких p элементов через обычный JavaScript. Я могу получить доступ к этим элементам p, но по какой-то причине я не могу удалить слушателя click. Он отлично работает с jQuery, но не с чистым JS. getP_element Функция вызывается при загрузке страницы. Вот мой код:Невозможно отключить событие click от элемента с простым JavaScript

function getP_element(){ 
    console.log("page loaded"); 
    var p_array = document.getElementById("checkboxesContainer").getElementsByTagName("p"); 
       for(var i=0;i<p_array.length;i++){ 
        p_array[i].onmousedown = new function(){ 
         return false; //this doesnt work 
        } 
       } 
    $("#checkboxesContainer p").click(false); //this works 
} 

EDIT: Более подробную информацию о том, что здесь происходит. Я создал несколько пользовательских checkboxes с пользовательским стилем. По какой-то причине флажки выбираются, даже когда пользователь нажимает на теги p, поэтому я решил, что мне нужно отключить события click. Это, как они определены в моем HTML:

<div id="checkBoxDiv2" class="checkBoxDiv"> 
       <input type='checkbox' value='someValue' id="checkBox2"/> 
       <label for="checkBox2"><p class="checkBoxText">some text goes here</p> 
        <span></span> 
       </label> 
      </div> 
+1

И как эти обработчики нажмите добавлены в первую очередь? – adeneo

+1

Почему вы определяете 'function' внутри цикла, и почему вы используете' new'? –

+0

Спасибо за ответы, я добавил дополнительную информацию к своему сообщению. – undroid

ответ

0

Попробуйте

p_array[i].onmousedown = null; 

См How to Clear/Remove JavaScript Event Handler?

Редактировать

Причина, по которой флажки проверяются при нажатии на p теги не имеет ничего общего с обработчиками кликов.

Скорее причина в атрибуте for в родительском теге label. Это проверит флажки, когда на этикетке появляется клик.

Изменить HTML для

<label><p class="checkBoxText">some text goes here</p> 
        <span></span> 
       </label> 
+0

Спасибо за ответ, но это не работает. Я добавил больше информации на мой пост. – undroid

+0

@undroid, см. Мой обновленный ответ – AmmarCSE

+0

Без атрибута 'for' флажки не проверяются, какие-либо предложения? – undroid

1

Вам не нужно отключить событие щелчка.

Флажки становятся отмеченными при нажатии на p, потому что у вас есть p тег внутри label который имеет for="checkBox2"

Вот что это означало бы делать.

Снимите for и предотвратит нажав на ярлык от активации correspinding input элемента

+0

Когда я удаляю флажки 'for', не проверяйте клик. – undroid