[英]Open an anchor link inside a div
我想阻止在document
body
上打開anchor
鏈接,而是在div
內部進行渲染。 我使用過e.preventDefault()
但我認為JQuery沒有針對該事件。
我是程序化地創建一個ul
並從array
項追加li
然后將ul
附加到div
。 結構如下所示:
//this is just a structure, not the actual HTML
<div id="results">
<ul> .ulStyle
<li> .list-group-item
-header
-p .lead
-a .anchorStyle
</li>
</ul>
</div>
然后,我為每個element
添加classes
。 除了ul
所有東西都在class
,我認為這可能就是為什么它不是針對anchors
。
jQuery :
$(function(){
console.info('** anchor-tag click handler **')
/*
I've tried variations on the targeting from a
single $('.anchorStyle') to what you see below.
*/
$('div #results ul .ulStyle li .list-group-item a .anchorStyle')
.click(function(e) {
e.preventDefault();
$('#results').empty();
$('#results').load( this.getAttribute('href') );
console.log('anchor clicked...');
});
});
我在reload
得到第一個console
消息,但on click
沒有第二個
問題:
我是否需要ul
上的課程才能正確定位? 我只是為了這個目的將它添加到ul
中。
這段代碼是否與其他所有代碼一起執行,而ul
可能尚未創建? 如果event
存在,JS / jQuery仍然應該bind
並繼續監聽event
- 或者在這種情況下,在click event
觸發后找到我所針對的element
,不是嗎?
在代碼中指出幾個問題......
首先是選擇者不對。 你space after your element and it's class
后面有一個space after your element and it's class
是錯的(例如: ul .ulStyle
這里.ulStyle被認為是ul的子節點。)選擇器必須是這樣的
$('div#results ul.ulStyle li.list-group-item a.anchorStyle')
注意我刪除了元素和它的類之間的空格。
即使在完成此更改后,它仍然不適合您,因為元素是動態添加的。 從OP獲取此行
我是程序化地創建一個ul並從數組項追加li然后將ul附加到div。
因此,這需要使用事件委托
語法必須更改為
$(document).on('click','div#results ul.ulStyle li.list-group-item a.anchorStyle',function(){//your stuff here});
此外,您可以將選擇器保持為'#results a.anchorStyle'
這里有一個結構的工作示例:
$('#results ul li a').click(function(e){ e.preventDefault(); console.log(this.href); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="results"> <ul> <li> <header>HEADER</header> <p></p> <a href="/a">ANCHOR</a> </li> </ul> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.