বলুন আমার কাছে একটি ক্লিক হ্যান্ডলার সংজ্ঞায়িত আছে:
$("#foo").click(function(e){
});
ফাংশন হ্যান্ডলারের মধ্যে আমি কীভাবে বলতে পারি যে অনুষ্ঠানটি প্রোগ্রামিকভাবে চালিত হয়েছে, বা ব্যবহারকারী দ্বারা?
বলুন আমার কাছে একটি ক্লিক হ্যান্ডলার সংজ্ঞায়িত আছে:
$("#foo").click(function(e){
});
ফাংশন হ্যান্ডলারের মধ্যে আমি কীভাবে বলতে পারি যে অনুষ্ঠানটি প্রোগ্রামিকভাবে চালিত হয়েছে, বা ব্যবহারকারী দ্বারা?
$x.click()বা $x.trigger('click')।
উত্তর:
আপনি ইভেন্ট অবজেক্টে একবার দেখে নিতে পারেন e। তাহলে ঘটনা একটি বাস্তব ক্লিকের দ্বারা আলোড়ন সৃষ্টি করা হলো, তুমি ভীষণ পছন্দ হবে clientX, clientY, pageX, pageY, ইত্যাদি ভিতরে eএবং তারা সংখ্যায় হবে; ক্লিকগুলি ট্রিগার করা হলে এই সংখ্যাগুলি মাউস পজিশনের সাথে সম্পর্কিত তবে কীবোর্ডের মাধ্যমে ক্লিকটি শুরু করা হলেও তারা সম্ভবত উপস্থিত থাকবে। যদি ইভেন্টটি এর পরে ট্রিগার করা হয়ে থাকে $x.click()তবে আপনার মধ্যে স্বাভাবিক অবস্থানের মান থাকবে না e। আপনি originalEventসম্পত্তিটির দিকেও নজর রাখতে পারেন, ঘটনাটি যদি আসে তবে সেখানে থাকা উচিত নয় $x.click()।
এরকম কিছু হতে পারে:
$("#foo").click(function(e){
if(e.hasOwnProperty('originalEvent'))
// Probably a real click.
else
// Probably a fake click.
});
এবং এখানে খেলতে এখানে একটি সামান্য স্যান্ডবক্স: http://jsfiddle.net/UtzND/
originalEvent? এটি কি সঠিক ধরণের জিনিস? কোথাও সমন্বয় আছে? স্থানাঙ্কগুলি কি সামঞ্জস্যপূর্ণ? স্থানাঙ্কগুলি কি ভিতরে আছে #foo? ...
JQuery ট্রিগার ম্যানুয়ালটিতে বর্ণিত হিসাবে আপনি একটি অতিরিক্ত প্যারামিটার ব্যবহার করতে পারেন :
$("#foo").click(function(e, from){
if (from == null)
from = 'User';
// rest of your code
});
$('#foo').trigger('click', ['Trigger']);
$x.click(), .click()কলকারীকে স্পষ্টভাবে আপনাকে বলতে হবে যে তারা এটি নকল করছে। কেভিন ওওকি কী করবেন তার উপর নির্ভর করে এটি কোনও সমস্যা হতে পারে বা নাও পারে।
$x.click()হ্যান্ডলার (ব্যবহারকারী ক্লিকের জন্য, যা "সাধারণ" হতে পারে ) এর মধ্যে আপনার পার্থক্যটি পুরোপুরি বুঝতে পারি না
ইতিমধ্যে আরও একটি প্রশ্নের উত্তর দেওয়া আছে।
ক্লিক () কোনও মাউস ক্লিক হয় বা কোনও কোড দ্বারা ট্রিগার করা হয় তা কীভাবে সনাক্ত করবেন?
whichইভেন্ট অবজেক্টের সম্পত্তি ব্যবহার করুন । এটি undefinedকোড-ট্রিগার ইভেন্টগুলির জন্য হওয়া উচিত
$("#someElem").click(function(e) {
if (e.which) {
// Actually clicked
} else {
// Triggered by code
}
});
জেএসফিডাল উদাহরণ - http://jsfiddle.net/interdream/frw8j/
আশা করি এটা সাহায্য করবে!
selectএকটি দিতে হবে e.which==undefined।
আমি উপরের সমস্ত সমাধান চেষ্টা করেছি। আমার ক্ষেত্রে কিছুই কার্যকর হয়নি। সমাধান নীচে আমার জন্য কাজ করে। আশা করি এটি আপনাকেও সহায়তা করবে।
$(document).ready(function(){
//calling click event programmatically
$("#chk1").trigger("click");
});
$(document).on('click','input[type=checkbox]',function(e) {
if(e.originalEvent.isTrusted==true){
alert("human click");
}
else{
alert("programmatically click");
}
});
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js">
</script>
<input type="checkbox" id="chk1" name="chk1" >Chk1</input>
<input type="checkbox" id="chk2" name="chk2" >Chk2</input>
<input type="checkbox" id="chk3" name="chk3" >Chk3</input>
ডোম স্তর 3 ইভেন্টটি উল্লেখ করে T এটি বর্তমানে IE9 + এবং ফায়ারফক্সে সমর্থিত (আমার পরীক্ষার উপর ভিত্তি করে। আমি এটিও পড়েছি (যদিও পুরোপুরি গবেষণা করা হয়নি) এটি কিছু ব্রাউজারে ওভাররাইড করা যেতে পারে এবং সম্ভবত এখনও বিশ্বস্ত হওয়ার জন্য 100% প্রস্তুত নয় (দুর্ভাগ্যক্রমে)।
এটি @ মিউ এর ফিডলের একটি পরিবর্তিত সংস্করণ যা আইই এবং ফায়ারফক্সে কাজ করে।
isTrustedসমর্থিত এবং লিখিতযোগ্য নয় কিনা তা দেখতে আপনাকে কয়েকটি পরীক্ষায় মিশ্রিত করতে হবে। আমি মনে করি আসল উত্তরটি কেন এই প্রশ্নের পিছনে রয়েছে এবং আমরা কখনই তা খুঁজে পাইনি on
বৌদ্ধিক আলোচনায় অংশ নিতে যাচ্ছি না, কোডটি ফিল্টার করার জন্য আমার পক্ষে কাজ করেছে .click()এবং তা .trigger('click')হচ্ছে-
$(document).on('click touchstart', '#my_target', function(e) {
if (e.pageX && e.pageY) { // To check if it is not triggered by .click() or .trigger('click')
//Then code goes here
}
});