Поддающийся сортировке UI jQuery — Как я могу отменить событие щелчка на объекте, это перетаскивается/сортируется?

Я обнаружил, что проще использовать коллекцию для сбора потоков в список и использовать thread.value для объединения и возврата значения из потока - это сокращает его до:

#!/usr/bin/env ruby
threads = (1..5).collect do |i|
  Thread.new { `echo Hi from thread ##{i}` }
end
threads.each do |t|
  puts t.value
end

При запуске , это производит:

Hi from thread #1
Hi from thread #2
Hi from thread #3
Hi from thread #4
Hi from thread #5
66
задан Calvin Nunes 24 January 2019 в 12:29
поделиться

3 ответа

У меня была та же проблема, и поскольку мои сортируемые элементы содержали три или четыре элемента, которые можно было щелкнуть (и число было переменным), связывание / отвязывание их на лету не казалось вариантом. Однако случайно я указал опцию

helper : 'clone'

, которая с точки зрения интерфейса вела себя идентично исходному сортируемому объекту, но, по-видимому, не запускала события щелчка на перетаскиваемом элементе и, таким образом, решала проблему. Это такая же хитрость, как и все остальное, но по крайней мере она короткая и легкая ..

137
ответ дан 24 November 2019 в 14:55
поделиться

Если у вас есть ссылка на событие click для вашего li, вы можете отвязать его в сортируемом методе обновления, а затем использовать Event / one для его повторной привязки. Распространение события может быть остановлено перед повторным связыванием, что предотвратит запуск исходного обработчика кликов.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">

<html lang="en">
<head> 


  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js"></script>

  <script type="text/javascript" charset="utf-8">
    var myClick = function () {
        console.log('click');
    };

    $().ready( function () { 

       $('#my_sortable').sortable({
         update: function(event, ui) { 
            ui.item.unbind("click");
            ui.item.one("click", function (event) { 
                console.log("one-time-click"); 
                event.stopImmediatePropagation();
                $(this).click(myClick);
            }); 
            console.log('update') },
         delay: 30
       });    


       $('#my_sortable li').click(myClick);                        

     });
  </script>

  <style type="text/css" media="screen">
    #my_sortable li {
      border: 1px solid black;
      display: block;
      width: 100px;
      height: 100px;    
      background-color: gray;
    }
  </style>

</head>
<body>

      <ul id="my_sortable">                 
        <li id="item_1">A</li>
        <li id="item_2">B</li>
        <li id="item_3">C</li>
      </ul>   

</body>
</html>
13
ответ дан 24 November 2019 в 14:55
поделиться

Некоторые методы модуля inspect хорошо подходят для этой цели:

import module
import inspect
src = inspect.getsource(module)
-121--2321928-

Я запрограммировал несколько веб-сайтов с Lua. Первый был планировщиком рейда для моей гильдии World of Warcraft (так часто вы начинаете программировать в Lua...). Для этого я использовал mod_lua с альфа-версией Apache 2.4. Два других были небольшими площадками конкурсов для клиентов, разработанными с помощью WSAPI, Nginx, Spawn-fcgi и Orbit. Эта установка чертовски быстрая, быстрее mod_lua и всего, что я видел. Страницы будут отображаться мгновенно, как будто они находятся в кэше! Опыт был очень приятным, и Lua делает вас быстро продуктивным. Но тебе лучше быть хорошо организованной. Lua не хватает много батарей, когда дело доходит до веб-разработки, поэтому вам часто приходится реализовывать свои собственные, и это может стать беспорядочным. Поэтому я предлагаю вам спланировать то, что вам понадобится, прежде чем начать. Я использовал свою собственную Lua "ORM" с MySQL и форсированную версию Lua Pages для шаблонов. Посмотрите здесь, если вы хотите дать Lua + Wsapi + Nginx попробовать: http://mascarenhas.github.com/2009/10/24/wsapi-nginx-fcgi.html Я думаю, это лучшая установка.

-121--3808453-

Ответ милосердия сработал для меня пару оговорок. Событие click фактически было на элементе дескриптора, а не на самом отсортированном элементе. К сожалению, объект ui не дает ссылки на дескриптор в событии обновления (запрос функции jquery ui?). Так что мне пришлось самому взять ручку. Кроме того, мне пришлось вызвать preventDefault, чтобы остановить действие щелчка.

update: function(ev, ui) {
    var handle = $(ui.item).find('h3');
    handle.unbind("click");
    handle.one("click", function (event) {
                            event.stopImmediatePropagation();
                            event.preventDefault();
                            $(this).click(clickHandler);
                        });
    // other update code ...
1
ответ дан 24 November 2019 в 14:55
поделиться
Другие вопросы по тегам:

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