JavaScript 및 jQuery 사용 캐시 개체 속성의 선택기를 사용하려고합니다.jQuery 캐시 된 선택기가 올바르게 작동하지 않습니다.
나는 $("#dnsTitle")
그러나 아래로 내 zPanelDNS.events
기능에서 나는 선택기 및 캐시 된 버전을 사용하려고 위치를 볼 수 있습니다
zPanelDNS.cache.dnsTitleId
에 저장합니다.
캐시 된 버전이 어떤 이유로 작동하지 않습니다. 나는 콘솔 로그에 두 선택기를 작성하고 그들은 모두 대상 요소를 찾을 수 있지만 어떤 이유로 캐시 된 버전이 작동하지 않습니다. 여기
는 2의 콘솔에서 출력, 당신은$("#dnsTitle")
zPanelDNS.cache.dnsTitleId
=
[div#dnsTitle.account accountTitle, context: document, selector: "#dnsTitle", jquery: "1.9.1", constructor: function, init: function…]
일들 ... 그들이 약간 다릅니다 볼 수 있습니다 =
[context: document, selector: "#dnsTitle", jquery: "1.9.1", constructor: function, init: function…]
자바 스크립트가 ...
var panelDNS = {
unsavedChanges: false,
init: function() {
panelDNS.events();
},
cache: {
dnsTitleId: $("#dnsTitle"),
translation: {
absolute: 0,
relative: 0,
sinceDirectionChange: 0,
percentage: 0
}
},
events: function() {
// Activate SAVE and UNDO Buttons when Record Row EDITED
$(document).on("keydown", "#dnsRecords input" ,function() {
// Using Selector
// DOES WORK
$("#dnsTitle").find(".save, .undo").removeClass("disabled");
console.log($("#dnsTitle"));
// Using Cached Selector panelDNS.cache.dnsTitleId
// DOES NOT WORK
//panelDNS.cache.dnsTitleId.find(".save, .undo").removeClass("disabled");
console.log(panelDNS.cache.dnsTitleId);
});
}
}
$(function(){
panelDNS.init();
});
캐시 된 개체는 해당 요소의 HTML 경우 요소를 참조 할 것입니다 고려해야 할 다른 중요한 possiblity를 캐싱 후 언제든지 교체됩니다 ... 심지어 교체 ID와 동일 함. – charlietfl
@charlietfl : 맞아. 만약 우리가'
어떻게 작동하는지 명확히하기 위해, 나는 그 한계를 알지 못했습니다. 코드 샘플의 맨 아래에서'$ (function() { panelDNS.init(); })를 호출하는 것을 볼 수 있습니다.''panelDNS.init()를 호출하면 "또한" 'panelDNS' 객체를 사용하고 있지만 지금은 그렇지 않다고 가정합니다. 그래서 가능한 해결책은 'new panelDNS' 또는 비슷한 코드를 DOM에 객체를 생성하기 위해 호출하는 것입니다. 또는 나는 여기서 완전히 벗어났다. – JasonDavis