問題:將$(".price").hide();
應用於已渲染的元素,但是,當我通過javascript加載新模板時,價格類將可見。應用樣式,無論元素是否已通過jQuery添加到DOM
問題:有沒有一種方法可以在插入到DOM中時將類型應用於所有將來的類實例。
例子:
$(".price").hide();
$('body').append('<div class="price">19.00</div>'); // this should be hidden.
問題:將$(".price").hide();
應用於已渲染的元素,但是,當我通過javascript加載新模板時,價格類將可見。應用樣式,無論元素是否已通過jQuery添加到DOM
問題:有沒有一種方法可以在插入到DOM中時將類型應用於所有將來的類實例。
例子:
$(".price").hide();
$('body').append('<div class="price">19.00</div>'); // this should be hidden.
而是做這種方式的,讓你的撥動開關修改容器添加或刪除類的元素。
然後,有一個CSS規則是這樣的:
.hidePrice .price{
display:none;
}
當您切換您的按鈕,只需撥動您的容器元素上hidePrice類。
我認爲最好的辦法是使用一個輔助類:
CSS
.helper{
display: none;
}
jQuery的
$(".price").addClass('helper'); //for dyanmic addition to certain classes
$('body').append('<div class="price helper">19.00</div>'); //for adding afterward
唯一的問題是,模板已經定義,它需要更多的工作申請此類渲染後。但很酷的想法。 – Fostah
您應該能夠用來做到這一點。
$('.price').livequery(function() {
$(this).hide();
});
好處是,這將覆蓋現有的以及添加到DOM的任何新元素。
編輯:正如其他人指出livequery是爲jQuery 1.3-1.4編寫的。所以我不確定它對你的情況有多大用處。 讓我看看是否有任何等效的1.7.2。關於在jQuery 1.7+中模仿livequery的功能的更多信息,請看this answer。
呵呵。有趣。 +1 – ramblinjan
你確定這將適用於jQuery 1.7.2嗎?它被寫爲1.3 - 1.4。 – Blender
@Blender好吧,廢話。我以前用過這個,但是我沒有注意到我注意到了什麼版本的jQuery。讓我檢查,如果它在1.7.2 –
這爲我工作:
使用jQuery:
$('<style id="priceVisibility">div.results .price {display: none; }</style>').appendTo('head');
沒有jQuery的:
// Appending style element to the head with a overriding style.
var style = document.createElement('style');
style.type = 'text/css';
style.id = 'priceVisibility';
style.innerHTML = 'div.results .price {display: none; }';
document.getElementsByTagName('head')[0].appendChild(style);
你可以只添加一個類的<身體>標籤,然後隱藏與CSS的。價格要素。例如。
的jQuery:
$('body').addClass('hide-price');
CSS:
.price {display: block}
.hide-price .price {display: none}
你的意思是*無論*如果元素被添加與jQuery或*當且僅當*中已經加入了jQuery的元素。如果答案是無論如何,爲什麼不讓價格類別顯示:無? – aquinas
我有一個價格的知名度撥動開關,當這個應用程序是使用jQuery.tmpl()來加載不幸的是新的模板。因此,根據交換機的不同,我爲未來添加到DOM的所有類設置了可見性。 – Fostah
然後我提出你正在努力。看到我的答案在下面。 – aquinas