Вопрос по javascript, jquery – Событие Div onclick не вызывается в Mozilla

2

У меня есть это в моем коде:

<div class="someClass">
    <div id="22" class="otherClass" onclick="goToEdit();">Title</div>
    <div class="parent">Other title</div>
</div>

А также:

function goToEdit()
{
    tree.selectItem($(event.target).attr('id'));
    btnMyButton_onclick();
}

В Chrome все работает нормально, но в Mozilla он не реагирует на событие нажатия. Зачем?

@ Sparky: или еще лучше, используя надлежащий отладчик (Firefox имеет встроенный сейчас или, конечно, Firebug) и точку останова. T.J. Crowder
Что такоеtree? Это относится кwindow.tree который в свою очередь относится к элементу с идентификаторомtree? Если да, Firefox не создает символы в глобальной области видимости для элементов с идентификаторами. Вы должны использоватьdocument.getElementById. Felix Kling
Откуда вы знаете, что событие не было запущено в Firefox (Mozilla)? Попробуйте поставить оповещение () в функции goToEdit () Sparky
@ T.J.Crowder Я получаю сообщение об ошибке, что событие не определено. user1322207
@FelixKling Нет, это дерево dhtmlx. Я получаю ошибку, что событие не определено. user1322207

Ваш Ответ

6   ответов
0

естьid="22", Возможно, это вызывает несоответствие между браузерами. Увидеть:http://www.w3.org/TR/html4/types.html

Error: User Rate Limit Exceededdocument.querySelector("#22")Error: User Rate Limit ExceededidError: User Rate Limit ExceededquerySelectorError: User Rate Limit Exceededtree.selectItemError: User Rate Limit ExceededidError: User Rate Limit ExceededStandards | Quirks
Error: User Rate Limit Exceededfine for HTML and the DOMError: User Rate Limit Exceededdocument.getElementById("22")Error: User Rate Limit Exceededstart with a letter.
0

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

1

 ... onclick="goToEdit(this);">

а также

function goToEdit(element)
    {
       tree.selectItem($(element).attr('id'));
       btnMyButton_onclick();
    }

редактировать:http://jsfiddle.net/SwUuE/4/

Error: User Rate Limit Exceeded
2

Doh! Мы все должны были понять.

Дело в том, чтоevent не является глобальным в большинстве браузеров, хотя и в IE, и Chrome бросает вызов сайтам, разработанным для IE, делая его глобальным, а также делая то, что он должен делать (передавая его в функцию обработчика событий).

Ваша лучшая ставка на данный момент - не использоватьonclick="code" на всех (см. ниже), но вы также можете сделать это:

<div id="22" class="otherClass" onclick="goToEdit(event);">Title</div>

... который должен работать кросс-браузер. Это работает, потому чтоevent объект определяется в особом контексте, в которомonclick Вызываются обработчики (в браузерах, которые делают это стандартным способом), или это глобально (в IE), и так или иначе, как это определено в этой точке (но не обязательно, как глобальное, позже в вашемgoToEdit Функция & # xA0; & # x2014; именно поэтому мы передаем это в качестве аргумента).

Но, опять же, я бы этого не сделал. Вместо этого я делаюid Значение, допустимое для CSS, должно начинаться с буквы и использовать jQuery для подключения обработчика:

HTML:

<div id="d22" class="otherClass">Title</div>

JavaScript:

$("#d22").click(goToEdit);
function goToEdit(event) {
    tree.selectItem(event.target.id.substring(1));
    btnMyButton_onclick();
}

Заметки:

I striped the d off the beginning of the id value before passing it on. I assume it was 22 for a reason. There's no reason to do $(event.target).attr('id'), just use event.target.id directly.

If the div may contain other elements (spans, ems, ps, etc.), note that event.target may not be the div, it may be a descendant element of the div. this will always be the div, though (jQuery sees to that), so:

$("#d22").click(goToEdit);
function goToEdit(event) {
    tree.selectItem(this.id.substring(1));
    btnMyButton_onclick();
}
0

Я тестировал на Mozilla Firefox и Chrome, он работал на обоих.

<input type="button" onclick="return goBack();" class="btn btn-warning cancel" value=" Cancel" style="color:white" />

<script>
function goBack() {
    window.history.back();
}
</script>
0

<div class="someClass">
    <div id="22" class="otherClass">Title</div>
    <div class="parent">Other title</div>
</div>

А потом попробуйте что-то вроде этого

$('#22').on('click', function (e) {
    your code
});

But если ваш div, id = & quot; 22 & quot; будет добавлен динамически, вы должны использовать что-то вроде этого

$('parent').on('click', '#22', function (e) {
    your code
});

где «родитель» - статический элемент уже существовал в документе до щелчка

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