هل هناك طريقة لتغيير معلمات الحدث في jQuery؟
-
26-09-2019 - |
سؤال
أريد أن أكون قادرًا على تغيير المعلمات التي يتم تمريرها إلى حدث 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;
}
});
عمل كمان