backbone.js - ইভেন্টগুলি কী ক্লিক হয়েছিল তা জেনে


96

আমার এক backbone.js ভিউ ক্লাসে আমার কিছু আছে:

...

events: {
  'click ul#perpage span' : 'perpage'
},

perpage: function() {
  // Access the text of the span that was clicked here
  // Something like: alert($(element).text())
},

...

কারণ আমার প্রতি পৃষ্ঠাগুলির মার্কআপে এর মতো কিছু থাকতে পারে:

<ul id="perpage">
  <li><span>5</span></li>
  <li><span>10</span></li>
</ul>

সুতরাং আমি কীভাবে ঘটনার কারণের উপাদান সম্পর্কে তথ্য পেতে পারি? বা এই উদাহরণে, এটি ক্লিক করা হয়েছিল?

উত্তর:


132

সাধারণত ইভেন্টের বাইন্ডে আপনি কেবল ব্যবহার করবেন $(this)তবে আমি নিশ্চিত যে ব্যাকবোন মতামতগুলি সেট আপ করা হয়েছে যাতে thisসর্বদা দৃশ্যের উল্লেখ হয়, তাই এটি চেষ্টা করুন:

perpage: function(ev) {
   alert($(ev.target).text());
}

সত্যিকারের শেষের সম্পাদনা : আপনি সম্ভবত ব্যবহার করতে চান $(ev.currentTarget)। নীচে পাওলিকের উত্তরের দ্বিধাটি দেখুন


4
যদি আমি সঠিক হন তবে এটি jquery ইভেন্টগুলির সাথে কাজ করে (যার পোস্টারটির বিষয়ে জিজ্ঞাসা করা হয়েছিল)। নোট তবে যে ঘটনা মেরুদন্ড এর ট্রিগার মাধ্যমে আলোড়ন সৃষ্টি () ফাংশন এই তথ্য বহন করে না (এটা পরিবর্তে আপনি যখন ট্রিগার () কলিং ব্যবহৃত আর্গুমেন্ট দেয়)
জেনস ALM

4
@ আরফাম্যাটিক - কারণ এগুলি সত্যিকারের স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট ইভেন্ট so এই দস্তাবেজগুলিতে এইচটিএমএল বা সিএসএসেরও উল্লেখ নেই।
স্কালে

4
"দাঁড়া মতামত তাই স্থাপন করা হয়েছে যে এটি সর্বদা দৃশ্য পড়ুন" - শুধুমাত্র সংজ্ঞায়িত ঘটনা এই প্রযোজ্য delegateEvents([events])বা eventsপ্রেরণ বস্তুর Backbone.View.extend(যা লোকচক্ষুর অন্তরালে সাবেক পদ্ধতি ব্যবহার করে)। এই সূচনাকারী বাঁধা ঘটনা প্রযোজ্য নয় পদ্ধতি ইত্যাদি রেন্ডার
skalee

98

ev.targetবিভ্রান্তিমূলক হতে পারে, আপনার http://www.quirksmode.org/js/events_order.htmlev.currentTarget তে বর্ণিত হিসাবে ব্যবহার করা উচিত


4
সম্পর্কে জেনে রাখা ভাল - তবে দেখে মনে হচ্ছে এটি আই-তে বাস্তবায়িত হয়নি - বা jQuery এটি ঠিক করার জন্য কি স্বাভাবিকীকরণ করে?
জেমি ওয়াং

4
দেখে মনে হচ্ছে jQuery ডোম উপাদানটি ইভেন্টের সূচনা হিসাবে ev.target উভয়কেই স্বাভাবিক করে তোলে এবং ইভেন্ট বুদ্বুদী পর্বের মধ্যে api.jquery.com/category/events/event-object
mikermcneil

6
আমি এই সাথে খেলছিলাম, এবং স্পষ্ট করে বলতে, আপনি সম্ভবত ev.currentTarget চান। এটি সমস্ত জিক্যুরি সমর্থিত ব্রাউজারগুলিতে ব্যবহারের জন্য স্বাভাবিক এবং নিরাপদ।
মিকর্ম্কনিল

4
হ্যাঁ, আপনি টার্গেটের পরিবর্তে কারেন্টটিজেটটি ব্যবহার করতে চান। উদাহরণস্বরূপ, আপনি যদি এমন কোনও লিঙ্ক বেঁধে রাখেন যাতে শিশু </< <span> পাঠ্য </a> "লক্ষ্যযুক্ত </ span> লক্ষ্য থাকে তবে <a> নয় child
এভেজেনি

এই উত্তর হওয়া উচিত। event.targetক্লিক করা আছে কেবল তা পেতে।
মহানগর

0

আপনি যে কোনও অ্যাট্রিবিউট পেতে পারেন। ev হিসাবে কাজ করে this:

perpage: function(ev) {
        console.log($(ev.target).attr('name'));
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.