سؤال

أريد أن أكون قادرًا على تغيير المعلمات التي يتم تمريرها إلى حدث START الخاص بـ Selectable ، لذلك يمكنني السماح للمستخدم بشكل أساسي باستخدام تأثير jQuery القابل للتحديد دون الحاجة إلى الضغط على مفتاح CTRL.

JS

$(function() {
$( "#selectable" ).bind("mousedown", function(event, ui) {
    var result = $( "#select-result" ).empty();
    event.metaKey = event.ctrlKey = true;
});
$( "#selectable" ).selectable();
});

لدي كمان مع ما أحاول إنجازه هنا:

http://jsfiddle.net/josephbulger/zfevm/

المشكلة التي أواجهها ، هي أنه عندما أقوم بتعيين معلمات الحدث في طريقة البدء ، فإن طريقة الإيقاف لا ترى التغييرات التي أجريها.

هل هناك طريقة لإنجاز ما أحاول فعله؟

هل كانت مفيدة؟

المحلول

لا يمكنك تعيين الخصائص هنا لا ... لأنها أ مختلف event اعتراض في stop طريقة. يمكنك تعيين بعض المتغيرات في نطاق أعلى (مثله) ، لكن لا شيء سيستمر على event هدف. ليس الأمر أنه "تطهير" لهم حقًا ، إنه مجرد علامة تجارية جديدة.


لجعل التصرف القابل للتحديد كما لو كنترول يتم الاحتفاظ به ، اربط بـ mousedown الحدث الذي يستخدمه في وقت مبكر وضبط .metaKey خاصية على ذلك event ل true, ، مثله:

$("#selectable").bind("mousedown", function(e) {
    e.metaKey = true;
}).selectable();

يمكنك اختباره هنا, ، تذكر أن تجد قبل الدعوة .selectable(), ، منذ أن يتم تنفيذ معالجات الأحداث في ترتيب.

نصائح أخرى

لقد قمت بتحديث الرمز. إلقاء نظرة على عنوان URL هذا.

http://jsfiddle.net/phoenix_suresh/7f6j5/

وفي الوقت نفسه ، أضفت معرف السمة إلى

  • العناصر بحيث يمكنك الحصول على مزيد من التحكم في ذلك.

  • بعد العثور على هذه الإجابة ، لاحظت أنه يمكنك استخدام originalEvent خاصية على event تم إرجاع الكائن في الاختيار start معالج الأحداث لتعيين ctrlKey خاصية إلى صواب.

    مثل ذلك:

    $("#selectable").selectable({
        start: function (event, ui) {
            event.originalEvent.ctrlKey = true;
        }
    });
    

    عمل كمان

    مرخصة بموجب: CC-BY-SA مع الإسناد
    لا تنتمي إلى StackOverflow
    scroll top