所以我现在就拥有它并且它可以工作,但是我想知道在编写移动网站时是否有最佳的写作方式,如果有重要的话,还有性能。
想想在元素下滑下(切换)的工具提示,我在页面上也有大约30个工具提示div,因为这将用于多个元素
JS:
$('.mobile-tool-tip').each(function() {
$(this).hide();
$(this).prev().focus(function() {
$(this).next().slideToggle('fast');
});
$(this).prev().blur(function() {
$(this).next().slideToggle('fast');
});
});
HTML for mobile-tool-tip功能
<div data-role="fieldcontain">
<input type="text" name="telephone" id="telephone" placeholder="Phone Number*" />
<div class="mobile-tool-tip" id="telephone_tip">Valid format <strong>999-999-9999</strong>. Please include the area code.</div>
</div>
一直在使用这个(感谢Hunter)切换元素,但不能让它与next()一起使用,我不想手工编写每个工具提示div
$("[name=field_name]").change(function() {
var show = $(this).val();
$("#hidden_div").toggle(show);
});
答案 0 :(得分:4)
一些建议:
.mobile-tool-tip
元素。next
或prev
元素,并且它是一个特定元素,我总是建议使用`nextAll(“。mobile-tool-tip”)$(this).prev()
。不要两次。 jQuery中的许多函数返回对最后一个查询的引用,这使您可以链接调用(类似$(".anElement").hide().remove()
)。利用它来节省时间。focus
和blur
进行操作时,请使用确定性方法隐藏/显示或启用/禁用元素。这将确保您不会错过任何活动或特殊场合,并且可以防止任何与之相关的错误。所以:
$('.mobile-tool-tip').each(function() {
$(this).prev().focus(function() {
$(this).nextAll(".mobile-tool-tip").slideDown('fast');
}).blur(function() {
$(this).nextAll(".mobile-tool-tip").slideUp('fast');
});
});
祝你好运!答案 1 :(得分:1)
一些简单的想法。
所以你最终会得到类似的东西......
$('.mobile-tool-tip').each(function() {
var $tip = $(this);
$tip.hide().prev().focus(function() {
$tip.slideToggle('fast');
}).blur(function() {
$tip.slideToggle('fast');
});
});
jsfiddle在使用闭包触发事件时显示出轻微的性能提升。
答案 2 :(得分:0)
您可以尝试通过使用变量来保存$(this).next()元素,从而将一些调用组合到DOM中。根据文件的大小,这可以减少大量的时间而不必进行两次调用。
var nextElement = $(this).next();
$(this).prev().blur(function(){
$(nextElement).slideToggle();
}