无法读取自定义 UIKit 事件
Can't read custom UIKit events
UIKit 有几个被触发的自定义事件。例如,切换选项卡时,会触发 change.uk.tab
事件 (https://getuikit.com/docs/tab.html)。问题是如果我在 JQuery 的 "$"
前加上 UIKit.$
,我只能读取事件。就好像 UIKit 的 jQuery $
正在返回一个不同的对象。
因此,例如,这将起作用:
UIkit.$('#tabs').on('change.uk.tab', function(e, active, previous) {
console.log("uk tab changed: " + active.context.id);
});
这是html:
<ul id="tabs" class="uk-tab" data-uk-tab >
<li id="tabPage1" class="uk-active"><a href="">tabPage1</a></li>
<li id="tabPage2"><a href="">tabPage2</a></li>
<li id="tabPage3"><a href="">tabPage3</a></li>
</ul>
但是,如果我要删除 "UIkit."
并仅使用 "$"
对象:
$('#tabs').on('change.uk.tab', function(e, active, previous) {
console.log("uk tab changed: " + active.context.id);
});
那我就看不到 change.uk.tab
事件了。 (也就是说,永远不会执行 console.log
行。)这是为什么? "UiKit.$"
和 "$"
有什么区别?
如您所见:
doc:
`<!-- Element within a modal, switcher or dropdown -->
<div id="myelement" data-uk-check-display>...</div>
<script>
$("#myelement").on('display.uk.check', function(){
// custom code to adjust height etc on show
});
</script>`
你可以避开 UIkit.$('#tabs') 直接使用 $('#tabs').
您可以在控制台中看到 UIkit 是一个包含对 $ 或更好的引用的对象 jQuery。
片段:
$(function () {
console.log('UIkit.$.fn.jquery: ' + UIkit.$.fn.jquery);
console.log('$.fn.jquery: ' + $.fn.jquery);
$('#tabs').on('change.uk.tab', function(e, active, previous) {
console.log("uk tab changed: " + active.context.id);
});
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.1/css/uikit.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.1/js/uikit.min.js"></script>
<ul id="tabs" class="uk-tab" data-uk-tab >
<li id="tabPage1" class="uk-active"><a href="">tabPage1</a></li>
<li id="tabPage2"><a href="">tabPage2</a></li>
<li id="tabPage3"><a href="">tabPage3</a></li>
</ul>
UIKit 有几个被触发的自定义事件。例如,切换选项卡时,会触发 change.uk.tab
事件 (https://getuikit.com/docs/tab.html)。问题是如果我在 JQuery 的 "$"
前加上 UIKit.$
,我只能读取事件。就好像 UIKit 的 jQuery $
正在返回一个不同的对象。
因此,例如,这将起作用:
UIkit.$('#tabs').on('change.uk.tab', function(e, active, previous) {
console.log("uk tab changed: " + active.context.id);
});
这是html:
<ul id="tabs" class="uk-tab" data-uk-tab >
<li id="tabPage1" class="uk-active"><a href="">tabPage1</a></li>
<li id="tabPage2"><a href="">tabPage2</a></li>
<li id="tabPage3"><a href="">tabPage3</a></li>
</ul>
但是,如果我要删除 "UIkit."
并仅使用 "$"
对象:
$('#tabs').on('change.uk.tab', function(e, active, previous) {
console.log("uk tab changed: " + active.context.id);
});
那我就看不到 change.uk.tab
事件了。 (也就是说,永远不会执行 console.log
行。)这是为什么? "UiKit.$"
和 "$"
有什么区别?
如您所见:
doc:
`<!-- Element within a modal, switcher or dropdown -->
<div id="myelement" data-uk-check-display>...</div>
<script>
$("#myelement").on('display.uk.check', function(){ // custom code to adjust height etc on show }); </script>`
你可以避开 UIkit.$('#tabs') 直接使用 $('#tabs').
您可以在控制台中看到 UIkit 是一个包含对 $ 或更好的引用的对象 jQuery。
片段:
$(function () {
console.log('UIkit.$.fn.jquery: ' + UIkit.$.fn.jquery);
console.log('$.fn.jquery: ' + $.fn.jquery);
$('#tabs').on('change.uk.tab', function(e, active, previous) {
console.log("uk tab changed: " + active.context.id);
});
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.1/css/uikit.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/2.27.1/js/uikit.min.js"></script>
<ul id="tabs" class="uk-tab" data-uk-tab >
<li id="tabPage1" class="uk-active"><a href="">tabPage1</a></li>
<li id="tabPage2"><a href="">tabPage2</a></li>
<li id="tabPage3"><a href="">tabPage3</a></li>
</ul>