防止slick.js 打开link onclick next
Prevent slick.js to open link onclick next
我在 angularJs 网络应用程序中使用 slick.js 滑块。该插件工作正常。我有上一个和下一个分页按钮。所有光滑的代码都在锚点 link 内到另一个页面。当我单击上一个或下一个按钮时,滑动条正在滑动,但 link 也被打开。因此,我想阻止在 link.
上单击样式的按钮打开 link
请查看简化结构。
<a ng-href="wherever" target="_blank">
<div class="photo-box">
<div class="slick-container" slick>
<div class="item" ng-repeat="photo in item.photos">
<img ng-src="url-to-image" />
</div>
</div>
</div>
<a/>
解析代码后,重新创建的按钮如下:<button class="slick-next slick-arrow" aria-label="Next" type="button" style="display: inline-block;">Next</button>
如前所述,当我单击按钮时,滑块起作用,但 link 也打开了。
您可能想要监听 <a>
元素上的 click
事件并检查 event.target.classList.contains('slick-arrow')
是否为 true
,如果是这样,请调用 event.preventDefault()
以防止 link 打开。
在您的模板中:
<a ng-href="wherever" target="_blank" (click)="handleLinkClicked($event)">
<div class="photo-box">
<div class="slick-container" slick>
<div class="item" ng-repeat="photo in item.photos">
<img ng-src="url-to-image" />
</div>
</div>
</div>
<a/>
在你的组件中:
handleLinkClicked(e: ClickEvent) {
if (e.target.classList.contains('slick-arrow')) e.preventDefault();
}
否则,您也可以尝试将 <a>
移到 slick
中,如果适合您,也许可以替换 <div class="item" ...>
:
<div class="photo-box">
<div class="slick-container" slick>
<a class="item" ng-href="wherever" target="_blank" ng-repeat="photo in item.photos">
<img ng-src="url-to-image" />
</a>
</div>
</div>
我在 angularJs 网络应用程序中使用 slick.js 滑块。该插件工作正常。我有上一个和下一个分页按钮。所有光滑的代码都在锚点 link 内到另一个页面。当我单击上一个或下一个按钮时,滑动条正在滑动,但 link 也被打开。因此,我想阻止在 link.
上单击样式的按钮打开 link请查看简化结构。
<a ng-href="wherever" target="_blank">
<div class="photo-box">
<div class="slick-container" slick>
<div class="item" ng-repeat="photo in item.photos">
<img ng-src="url-to-image" />
</div>
</div>
</div>
<a/>
解析代码后,重新创建的按钮如下:<button class="slick-next slick-arrow" aria-label="Next" type="button" style="display: inline-block;">Next</button>
如前所述,当我单击按钮时,滑块起作用,但 link 也打开了。
您可能想要监听 <a>
元素上的 click
事件并检查 event.target.classList.contains('slick-arrow')
是否为 true
,如果是这样,请调用 event.preventDefault()
以防止 link 打开。
在您的模板中:
<a ng-href="wherever" target="_blank" (click)="handleLinkClicked($event)">
<div class="photo-box">
<div class="slick-container" slick>
<div class="item" ng-repeat="photo in item.photos">
<img ng-src="url-to-image" />
</div>
</div>
</div>
<a/>
在你的组件中:
handleLinkClicked(e: ClickEvent) {
if (e.target.classList.contains('slick-arrow')) e.preventDefault();
}
否则,您也可以尝试将 <a>
移到 slick
中,如果适合您,也许可以替换 <div class="item" ...>
:
<div class="photo-box">
<div class="slick-container" slick>
<a class="item" ng-href="wherever" target="_blank" ng-repeat="photo in item.photos">
<img ng-src="url-to-image" />
</a>
</div>
</div>