Javascript автоматически добавляет атрибут «d__=" в таблицу td при быстром нажатии после загрузкиJquery

Программирование на jquery
Ответить
Anonymous
 Javascript автоматически добавляет атрибут «d__=" в таблицу td при быстром нажатии после загрузки

Сообщение Anonymous »

У меня проблема с javascript в таблице: когда пользователь нажимает на элемент tr таблицы, класс изменения строки, а другие строки возвращаются к старому классу с помощью этого кода:

Код: Выделить всё

 $(document).on("mousedown", "#orders_products_table > tr", function(e){
e.preventDefault();
let product = $(this).children("td").eq(0).text();
let category = $("#orders_categoriesbt").text();
switch(e.which){
case 1:
if(!$(this).is(":first-child")){
$("#orders_products_table > tr").removeClass("principal-tr-yellow");
$(this).addClass("principal-tr-yellow");
LoadAdditions(category, product);
}
break;
case 3:
if(!$(this).is(":first-child")){
$("#orders_products_table > tr").removeClass("principal-tr-yellow");
$(this).addClass("principal-tr-yellow");
$(this).contextmenu(function(e){
e.preventDefault();
$("#orders-context-menu").css("display", "block");
if((e.pageX + $("#orders-context-menu")[0].scrollWidth) >= $(window).width() && (e.pageY + $("#orders-context-menu")[0].scrollHeight) >= $(window).height()){
$("#orders-context-menu").css({
top: (e.pageY - $("#orders-context-menu")[0].scrollHeight) + "px",
left: (e.pageX - $("#orders-context-menu")[0].scrollWidth) + "px"
});
}else if((e.pageX + $("#orders-context-menu")[0].scrollWidth) >= $(window).width() && (e.pageY + $("#orders-context-menu")[0].scrollHeight) < $(window).height()){
$("#orders-context-menu").css({
top: e.pageY + "px",
left: (e.pageX - $("#orders-context-menu")[0].scrollWidth) + "px"
});
}else if((e.pageX + $("#orders-context-menu")[0].scrollWidth) < $(window).width() && (e.pageY + $("#orders-context-menu")[0].scrollHeight) > $(window).height()){
$("#orders-context-menu").css({
top: (e.pageY - $("#orders-context-menu")[0].scrollHeight) + "px",
left: e.pageX + "px"
});
}else{
$("#orders-context-menu").css({
top: e.pageY + "px",
left: e.pageX + "px"
});
}
row_selected = $(this);
});
}
break;
}
Таблица генерируется динамически с помощью ajax-вызова к серверу Flask, но если по строке щелкнуть раньше, чем через секунду после ее создания, в DOM автоматически появится d__="" в TD и измените цвет текста с зеленого на черный.
DOM
HTML

Код: Выделить всё




{{langorders[session['lang']]['additions-title']}}



Я принудительно удалил атрибут через 2 секунды, и это работает, но решение мне не нравится.

Код: Выделить всё

function removeautoattr(){
$("#orders_products_table >  tr").children("td").removeAttr("d__");
}

function LoadProducts(category){
$.ajax({
type:"GET",
url: "/orderspage_loadproducts",
headers:{
"Content-type":"application/json",
"Accept":"application/json"
},
data:{
p_category: category
},
success:function(response){
$("#orders_products_table").html(response["html"]);
setTimeout(removeautoattr, 2000);
},
error:function(xhr, status, error){
console.error(xhr);
}
});
}
Кто-нибудь знает, почему d__ автоматически добавляется в DOM? Заранее спасибо.
Я сделал таймер, чтобы удалить атрибут d__ через 2 секунды или заблокировать функцию на 2 секунды, прежде чем пользователь сможет щелкнуть. Оба работают, но мне не нравится решение.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -quickly-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»