ক্লিক ইভেন্টের মতো 'টাচস্টার্ট' ইভেন্টের জন্য e.PageX পজিশনের সমতুল্য কি আছে?


104

আমি লাইভ ফাংশনটিতে ব্যবহৃত একটি টাচস্টার্ট ইভেন্টের jQuery এর সাথে এক্স পজিশনটি পাওয়ার চেষ্টা করছি?

অর্থাত

$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );

এখন, এটি ইভেন্ট হিসাবে 'ক্লিক' করে কাজ করে। পৃথিবীতে কীভাবে ( আলফা জিকিউরি মোবাইল ব্যবহার না করে ) আমি কোনও স্পর্শ ইভেন্টের সাথে এটি পাই?

কোন ধারনা?

কোন সাহায্যের জন্য ধন্যবাদ।


আমি যারা এই সাহায্য করার প্রয়োজন হয় এই পাওয়া: - stackoverflow.com/questions/3183872/... এটি touchstart কাজ করে।
মোমযুক্ত

উত্তর:


180

কিন্ডা দেরিতে, তবে আপনাকে জিক্যুরি ম্যাসেজ করে না, মূল ইভেন্টটি অ্যাক্সেস করতে হবে। এছাড়াও, যেহেতু এগুলি বহু-স্পর্শ ইভেন্ট, তাই অন্যান্য পরিবর্তনগুলি করা দরকার:

$('#box').live('touchstart', function(e) {
  var xPos = e.originalEvent.touches[0].pageX;
});

আপনি যদি অন্য আঙ্গুলগুলি চান তবে আপনি এগুলি স্পর্শ তালিকার অন্যান্য সূচীতে খুঁজে পেতে পারেন।

নতুন জ্যাকুরির জন্য আপডেট করুন:

$(document).on('touchstart', '#box', function(e) {
  var xPos = e.originalEvent.touches[0].pageX;
});

আপনার শেষে একটি অনুপস্থিত শেষ বন্ধনী রয়েছে, এটি হওয়া উচিত:})
স্টিভ্যাসি

তুমি সঠিক. বিস্মিত কেউ 2 বছর ধরে খেয়াল করেনি! =) ধন্যবাদ!
mkoistinen

দুর্ভাগ্যক্রমে আমার পক্ষে কাজ করেনি, আমি প্রথমটি x এবং y পেয়েছিলাম touchmove
অ্যান্ড্রুব

@andrewb, অ্যাড e.preventDefault()মধ্যে touchstartইভেন্ট হ্যান্ডলার।
matewka

ধন্যবাদ, বন্ধু. e.touches[0].pageX;আমার জন্য ভাল কাজ করেছেন
জয়ন্ত বর্ষি

43

আমি JQuery ভিত্তিক প্রকল্পের জন্য এই সাধারণ ক্রিয়াটি ব্যবহার করি

    var pointerEventToXY = function(e){
      var out = {x:0, y:0};
      if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){
        var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
        out.x = touch.pageX;
        out.y = touch.pageY;
      } else if (e.type == 'mousedown' || e.type == 'mouseup' || e.type == 'mousemove' || e.type == 'mouseover'|| e.type=='mouseout' || e.type=='mouseenter' || e.type=='mouseleave') {
        out.x = e.pageX;
        out.y = e.pageY;
      }
      return out;
    };

উদাহরণ:

$('a').on('mousedown touchstart', function(e){
  console.log(pointerEventToXY(e)); // will return obj ..kind of {x:20,y:40}
})

আশা করি এটি আপনার পক্ষে উপকারী হবে;)


13
ইভেন্টের ধরণটি পরীক্ষা করার দরকার নেই কারণ স্পর্শ ইভেন্টের জন্য e.pageX অপরিজ্ঞাত করা হবে। কেবল করুনout.x = e.pageX || e.originalEvent.touches[0].pageX;
গ্রিফিন

1
প্রত্যাবর্তনের আগে আমি এই অংশটি যুক্ত করার জন্য যদি এটি কাউকে সহায়তা করে তবে পিতামণ্ডলের উপাদানগুলির উপর ভিত্তি করে শতাংশের অবস্থান অর্জন করুন ... var অফসেটপ্যারেন্ট = e.target.offsetParent; ভ্যারেন্টালফিট = e.target.offsetParent.offsetLeft; আউট। out.percentY = (out.y - অফসেটপ্যারেন্ট.অফসেটটপ) / অফসেটপ্রেেন্ট.অফসেটহাইট; ফিরে আসা;
sradforth

if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){-> if (e.type.startsWith("touch"))?

@ গ্রিফিন - আমি মনে করি যে আপনার পরামর্শের সাথে সমস্যাটি হ'ল ডেস্কটপে যখন নথির বাম প্রান্তে মাউস থাকে তখন আপনার বক্তব্যের প্রথম শাখাটি 0 দেয় যা মিথ্যা হিসাবে ব্যাখ্যা করা হয় এবং তারপরে ব্রাউজারের ত্রুটি কারণ দ্বিতীয় শাখায় অপরিবর্তিত একমত?
এমএসসি

13

আমি এখানে অন্যান্য উত্তরগুলির কয়েকটি চেষ্টা করেছি, তবে আসল ইভেন্টটিও অপরিজ্ঞাত ছিল। পরিদর্শন শেষে, একটি টাচলিস্ট শ্রেণিবদ্ধ সম্পত্তি (অন্য পোস্টার দ্বারা প্রস্তাবিত হিসাবে) পাওয়া গেছে এবং এভাবে পেজএক্সএক্স / ওয়াইয়ে পৌঁছাতে সক্ষম হয়েছেন:

var x = e.changedTouches[0].pageX;

4
এটি সমস্ত জাভাস্ক্রিপ্ট ভিত্তিক কোডের জন্য সূক্ষ্ম কাজ করে। স্ক্রু jquery
মার্টিয়ান2049

2
আমার ত্রাণকর্তা! এমনকি টাচমোভ () এর জন্যও পুরোপুরি কাজ করে।
তিবিক্স

7

আপনি jQuery ব্যবহার করে না থাকেন ... আপনি ইভেন্টের অ্যাক্সেস এক প্রয়োজন TouchListকরা একটি পেতে Touchবস্তুর যা pageX/Y clientX/Yইত্যাদি

এখানে সম্পর্কিত ডক্সের লিঙ্কগুলি রয়েছে:

আমি e.targetTouches[0].pageXআমার ক্ষেত্রে ব্যবহার করছি ।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.