Добавьте style="display: block;"
к вашему div-элементу tabcontent, чтобы показать ваш div по умолчанию.
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.sight_img{
height: 80%;
width: 100%;
}
.tab {
overflow: hidden;
border: 1px solid #ccc;
background-color: #f1f1f1;
}
/* Style the buttons inside the tab */
.tab button {
background-color: inherit;
float: left;
border: none;
outline: none;
cursor: pointer;
padding: 14px 16px;
transition: 0.3s;
font-size: 17px;
}
/* Change background color of buttons on hover */
.tab button:hover {
background-color: #ddd;
}
/* Create an active/current tablink class */
.tab button.active {
background-color: #ccc;
display:block;
}
/* Style the tab content */
.tabcontent {
display: none;
padding: 6px 12px;
-webkit-animation: fadeEffect 1s;
animation: fadeEffect 1s;
}
/* Fade in tabs */
@-webkit-keyframes fadeEffect {
from {opacity: 0;}
to {opacity: 1;}
}
@keyframes fadeEffect {
from {opacity: 0;}
to {opacity: 1;}
}
</style>
</head>
<body>
<div class="tab">
<button class="tablinks btn active" onclick="openCity(event, 'Description')">Description</button>
<button class="tablinks" onclick="openCity(event, 'Avalability')">Avalability</button>
<button class="tablinks" onclick="openCity(event, 'Itinerary')">Itinerary</button>
<button class="tablinks" onclick="openCity(event, 'Policy')">Policy</button>
</div>
<!-- // content-tabs-i // -->
<div id="Description" class="tabcontent" style="display: block;">
<h3>Description</h3>
</div>
<div id="Avalability" class="tabcontent">
<h3>Avalability</h3>
</div>
<div id="Itinerary" class="tabcontent">
<h3>Itinerary</h3>
</div>
<div id="Policy" class="tabcontent">
<h3>Policy</h3>
</div>
</body>
</html>
<script>
function openCity(evt, cityName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " active";
}
</script>
Любой класс/метод объекта является объектом в Ruby и имеет некоторые методы сами по себе.
Таким образом, можно сделать это:
[].method(:count).inspect
=> "#<Method: Array#count>"
[].method(:detect).inspect
=> "#<Method: Array(Enumerable)#detect>"
Быстрый бит RegEx и Вы сделаны.
возможно, Вы используете вызывающую сторону (), чтобы дать Вам, след видит:
ответ tobyhede является потрясающим, но я просто выполнил в небольшом количестве рытья irb
и нет никакой потребности нарезать вывод #inspect
. Method
класс
>> Object.new.method(:inspect)
=> #<Method: Object(Kernel)#inspect>
имеет некоторые полезные собственные методы:
>> Object.new.method(:inspect).methods - Object.methods
=> ["owner", "call", "to_proc", "unbind", "arity", "receiver", "[]"]
В особенности #owner
метод, который возвращает владельца как надлежащий объект:
>> [].method(:count).owner
=> Array
>> [].method(:detect).owner
=> Enumerable
Я думаю, что что-то вроде этого могло работать
def print_ancestor_definitions(cl,method)
ancestors = cl.ancestors
p ancestors.join(' < ') #Print heirarchy
p "Searching..."
ancestors.each do |c|
if c.instance_methods.include? method
p "#{c} defines #{method} as an instance method!"
elsif c.singleton_methods.include? method
p "#{c} defines #{method} as a singleton method"
else
p "#{c} doesn't define #{method}"
end
end
end
print_ancestor_definitions(Array,'find')
# >> "Array < Enumerable < Object < Kernel"
# >> "Searching..."
# >> "Array defines find as an instance method!"
# >> "Enumerable defines find as an instance method!"
# >> "Object doesn't define find"
# >> "Kernel doesn't define find"
Я предполагаю, что последний, который будет иметь метод, является тем, который определяет его?
Я не уверен, что мы можем точно найти, куда метод прибывает из при включении смешивания все методы становятся частью класса, как будто Вы действительно помещали их там. См. ответ от dylanfm для приблизительно.