मेरे पास टाइल्स (घास, पानी, आदि) के साथ एक कंटेनर है और उनमें से कुछ में मेरे पास आइटम (सीमा-sprites, पेड़, और सामान्य आइटम) हैं। Sprites की प्रकृति के कारण, सभी आइटम 64x64 हैं जबकि टाइल्स केवल 32x32 हैं।बच्चों पर होवर ईवेंट ट्रिगर न करें
मेरी समस्या यह है कि मैं टाइल्स पर एक होवर ईवेंट ट्रिगर करना चाहता हूं, लेकिन कभी-कभी उन्हें किसी अन्य टाइल्स की वस्तुओं से छायांकित किया जाता है।
नीचे दी गई छवि समस्या दिखाती है। मोटी हरी क्षेत्र टाइल है कि वास्तव में पेड़-टाइल को घुमाने के लिए आच्छादित हो जाता है।
the problem http://upload.cip.nu/pfile.php?file_id=2327
सीएसएस:
#map_canvas .tile{
height: 32px;
position: absolute;
width: 32px;
}
#map_canvas .tile .item{
background-position: bottom right;
background-repeat: no-repeat;
bottom: 0;
display: inline-block;
height: 64px;
margin: 0;
padding: 0;
position: absolute;
right: 0;
}
एचटीएमएल, सरलीकृत:
<div class="tile" style="background-image: url(grass.png);"></div>
<div class="tile" style="background-image: url(grass.png);"></div>
<div class="tile" style="background-image: url(grass.png);">
<div class="item" style="background-image(top-left-border.png);"></div>
</div>
यहाँ लाइव डेमो http://sleavely.com/tiles/
मैं भी नहीं जानता कि कैसे वाक्यांश के लिए प्रश्न, लेकिन यहां जाता है:
क्या यह केवल मूल तत्व (.tile) पर ईवेंट को ट्रिगर करना संभव है ताकि बच्चों को बहाना संभव हो (.item) मैं वास्तव में किस टाइल को रोकता हूं?
संपादित करें: धन्यवाद @Brilliand लिए मैं निम्नलिखित कार्यान्वित
function figureOutTile(e){
var $source = jQuery(e.srcElement);
if($source.hasClass("item")){
var $parent = $source.parent();
var posx = $parent.attr("col");
var posy = $parent.attr("row");
if(e.offsetY <= 32){
if(e.offsetX <= 32){
return jQuery(".tile[col="+ (posx-1) +"][row="+ (posy-1) +"]");
}else{
return jQuery(".tile[col="+ posx +"][row="+ (posy-1) +"]");
}
}else{
if(e.offsetX <= 32){
return jQuery(".tile[col="+ (posx-1) +"][row="+ posy +"]");
}else{
return $parent;
}
}
}else{
return $source;
}
}
jQuery("#map_viewport").on({
mouseenter: function(e) {
var $target = figureOutTile(e);
$target.addClass('hovered');
},
mouseleave: function() {
jQuery(".tile.hovered").removeClass('hovered');
}
}, '.tile');
क्या हम आपकी जावास्क्रिप्ट देख सकते हैं? आपके द्वारा पोस्ट किए गए कोड में कुछ भी होवर को संदर्भित नहीं करता है। – Fresheyeball
वाह, यह एक बहुत ही विशिष्ट सवाल है। लेकिन मुझे लगता है कि यह घटना बुलबुले के लिए उबलता है। – Jivings
@ फ्रेशेयबॉल: अभी यह मूल रूप से सिर्फ एक 'jQuery ("# map_viewport") है। ("होवर", ".tile", फ़ंक्शन (ई) {'जिसका उपयोग मैं टाइल पर कक्षा को टॉगल करने के लिए करता हूं। समस्या यह है यह घटना गलत टाइल पर ट्रिगर करती है। – Sleavely