jQuery 选择没有任何 JS 事件链接的链接,以便 PJAX 仅处理链接

jQuery select links that don't have any JS events linked to them for PJAX to work on links only?

本文关键字:链接 以便 PJAX 处理 事件 选择 任何 JS jQuery      更新时间:2023-09-26

我有一个基于WordPress和Woocommerce的基本购物网站。当然,许多按钮和链接都有Javascript函数,防止了转到链接并执行其他操作的默认行为。不幸的是,如果我将 PJAX 设置为选择所有$('a')元素,那么 AJAX 函数(或 javascript,例如甚至下拉列表)函数将抓住正常工作,PJAX 将接管并刷新页面。

例如,如果我单击Bootstrap下拉链接,它将转到链接而不是打开下拉列表。

我想知道是否有办法选择元素(使用 jQuery),这些元素只转到它们的链接并且没有 JS 事件侦听它们。

尝试此演示,让我知道它是否适用于你的方案。

.HTML:

<a href="#" class="link-with-handler">Link 1</a>
<a href="#">Link 2</a>
<a href="#" class="link-with-handler">Link 3</a>
<a href="#">Link 4</a>
<br>
<br>
<button id="test">Which links have no jQuery click event bound?</button>

j查询:

$(function() {
    // Assign handler to links with class 'link-with-handler'
    $('.link-with-handler').click(function() { alert('handled'); });
    // Test function
    $('#test').click(function(){
        // Get all links
        var links = $('a');
        // Iterate through links testing each one for the event handler
        $.each(links, function( index, value ) {
            var ev = $._data(value, 'events');
            if (!ev || !ev.click) { 
                alert(value.innerText + ' has no jQuery click handler bound to it.');  
            }
        });
    });
});

http://jsfiddle.net/goq7a6bn/2/

相关文章: