আমি কোনও ইভেন্টে আগুন জ্বালাতে সক্ষম হতে চাই যখন কোনও ব্যবহারকারী কোনও বোতামে ক্লিক করে, তারপরে সেই ক্লিকটি ধরে রাখে 1000 থেকে 1500 এমএসে।
JQuery মূল কার্যকারিতা বা একটি প্লাগইন ইতিমধ্যে এটি সক্ষম করে?
আমার নিজের রোল করা উচিত? কোথায় শুরু করব?
আমি কোনও ইভেন্টে আগুন জ্বালাতে সক্ষম হতে চাই যখন কোনও ব্যবহারকারী কোনও বোতামে ক্লিক করে, তারপরে সেই ক্লিকটি ধরে রাখে 1000 থেকে 1500 এমএসে।
JQuery মূল কার্যকারিতা বা একটি প্লাগইন ইতিমধ্যে এটি সক্ষম করে?
আমার নিজের রোল করা উচিত? কোথায় শুরু করব?
উত্তর:
var timeoutId = 0;
$('#myElement').on('mousedown', function() {
timeoutId = setTimeout(myFunction, 1000);
}).on('mouseup mouseleave', function() {
clearTimeout(timeoutId);
});
সম্পাদনা : অ্যান্ডি প্রতি সংশোধন ... ধন্যবাদ!
সম্পাদনা 2 : প্রতি জেনারফ একই হ্যান্ডলার সহ দুটি ইভেন্টের জন্য এখন বাইন্ড ব্যবহার করে
mouseleave
হ্যান্ডলারের মধ্যেও অন্তর সাফ করার বিষয়ে বিবেচনা করতে পারেন ।
.bind('mouseup mouseleave', function() {
এয়ারকোডেড (তবে এই ঝাঁকুনিতে পরীক্ষিত )
(function($) {
function startTrigger(e) {
var $elem = $(this);
$elem.data('mouseheld_timeout', setTimeout(function() {
$elem.trigger('mouseheld');
}, e.data));
}
function stopTrigger() {
var $elem = $(this);
clearTimeout($elem.data('mouseheld_timeout'));
}
var mouseheld = $.event.special.mouseheld = {
setup: function(data) {
// the first binding of a mouseheld event on an element will trigger this
// lets bind our event handlers
var $this = $(this);
$this.bind('mousedown', +data || mouseheld.time, startTrigger);
$this.bind('mouseleave mouseup', stopTrigger);
},
teardown: function() {
var $this = $(this);
$this.unbind('mousedown', startTrigger);
$this.unbind('mouseleave mouseup', stopTrigger);
},
time: 750 // default to 750ms
};
})(jQuery);
// usage
$("div").bind('mouseheld', function(e) {
console.log('Held', e);
})
যদি কারও আগ্রহ থাকে তবে আমি এটির জন্য একটি সাধারণ জিকুয়ের প্লাগইন তৈরি করেছি।
সম্ভবত আপনি একটি setTimeout
কল চালু করতে পারেন mousedown
, এবং তারপরে এটি বাতিল করুন mouseup
(যদিmouseup
আপনার সময়সীমা শেষ হওয়ার আগে ঘটে)।
যাইহোক, দেখে মনে হচ্ছে একটি প্লাগইন রয়েছে: লং ক্লিক ।
এখানে আমার বর্তমান বাস্তবায়ন:
$.liveClickHold = function(selector, fn) {
$(selector).live("mousedown", function(evt) {
var $this = $(this).data("mousedown", true);
setTimeout(function() {
if ($this.data("mousedown") === true) {
fn(evt);
}
}, 500);
});
$(selector).live("mouseup", function(evt) {
$(this).data("mousedown", false);
});
}
var _timeoutId = 0;
var _startHoldEvent = function(e) {
_timeoutId = setInterval(function() {
myFunction.call(e.target);
}, 1000);
};
var _stopHoldEvent = function() {
clearInterval(_timeoutId );
};
$('#myElement').on('mousedown', _startHoldEvent).on('mouseup mouseleave', _stopHoldEvent);
এটিকে সহজ করার জন্য আমি কিছু কোড লিখেছি
//Add custom event listener
$(':root').on('mousedown', '*', function() {
var el = $(this),
events = $._data(this, 'events');
if (events && events.clickHold) {
el.data(
'clickHoldTimer',
setTimeout(
function() {
el.trigger('clickHold')
},
el.data('clickHoldTimeout')
)
);
}
}).on('mouseup mouseleave mousemove', '*', function() {
clearTimeout($(this).data('clickHoldTimer'));
});
//Attach it to the element
$('#HoldListener').data('clickHoldTimeout', 2000); //Time to hold
$('#HoldListener').on('clickHold', function() {
console.log('Worked!');
});
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<img src="http://lorempixel.com/400/200/" id="HoldListener">
এখন আপনার হোল্ডিংয়ের সময় ঠিক করা এবং clickHold
আপনার উপাদানটিতে ইভেন্ট যুক্ত করা দরকার
এটা চেষ্টা কর:
var thumbnailHold;
$(".image_thumb").mousedown(function() {
thumbnailHold = setTimeout(function(){
checkboxOn(); // Your action Here
} , 1000);
return false;
});
$(".image_thumb").mouseup(function() {
clearTimeout(thumbnailHold);
});