2013-07-05 43 views
3

我想用超鏈接調用Jquery函數。調用帶錨標記的jquery函數

因爲我現在就是這樣。

<a name='lnkViews'>" + title+ "</a> 

$("a[name='lnkViews']").on("click", function (e) { 
    alert("Calling function"); 
}); 

因爲它在這裏不起作用。如何使用超鏈接調用函數?

+0

正在動態生成的鏈接,或者它只是靜態的? –

+1

你在等DOM準備好了嗎? –

+0

a標籤上是否已經有'href'? – putvande

回答

12

使用delegation版本的.on()dynamic created element

WORKING EXAMPLE

$(document).on("click","a[name='lnkViews']", function (e) { 
    alert("Calling function"); 
}); 
+0

@downvoter這裏有什麼問題? –

+1

我建議其他的方式,並收集-1,所以不要找一個理由。 –

+2

關於此主題有一個序列downvoter –

3

無論Prevent Default Behavior或使用javascript:void(0)伎倆。

$(function() { // simply document onload call, just pointing out where to put code, if you didn't already know 
    $(document).on('click', 'a[name=lnkViews]', function(e) { 
     e.preventDefault(); 
    }); 
}) 

| OR |

<a name="lnkViews" href="javascript:void(0);">" + title+ "</a> 

然後,在你的JS

$(function() { 
    $(document).on('click', 'a[name=lnkViews]', function(e) { 
     /* do work */ 
    }); 
}) 

我在您的意見注意到你說的鏈接創建dynamically,然後我的解決方案會爲你基於一個事實,我的工作m使用.ondelegate版本。這意味着事件被分配給添加到與選擇器匹配的文檔的任何內容。因此分配的原因是這樣的:

$(document).on('click', 'a[name=lnkViews]', function(e) { 
+0

我是如何得到upvoted兩次和downvoted兩次? WTH?我的答案完全符合問題的手段! – SpYk3HH

+0

我認爲這主要是因爲您在這裏使用無用的DOM就緒處理程序,而且順便說一句,沒有必要在沒有指定href的情況下防止錨標記上的默認行爲。否則,我也不明白它 –

+0

它的工作原理非常完美,謝謝 – Arianule

1

你使用的是哪個版本的jquery?

把它分爲:

$(function() 
{ 
    js code 
}); 

你可能忽略它,但也許是因爲它看起來你是動態添加鏈接不是東西。

如果是這樣,請嘗試:

var link = "<a href='#' onclick='alert(\'Calling function\');'>" + title + "</a>"; 
1

你必須確保在執行您的on('click')代碼時,你的鏈接是在DOM。

jQuery的功能on()會附加一個事件處理程序中包含的所有$("a[name='lnkViews']") jQuery對象,但如果沒有元素時被執行$("a[name='lnkViews']").on()沒有處理程序就會附着在你的DOM匹配"a[name='lnkViews']"

爲了解決這個問題,你可以這樣做:

var $a = $('<a name="lnkViews">' + title+ '</a>'); 
$a.on("click", function (e) { }); 

//adding $a in your DOM with element.append($a); for exemple 

您也可以等待你的頁面加載通過這樣執行$("a[name='lnkViews']").on()前:

$(function() { 
    $("a[name='lnkViews']").on("click", function (e) { }); 
}); 

問候

1

它工作正常。您的代碼應包含});用於關閉jQuery函數:

Working Demo jsfiddle

$("a[name=lnkViews]").on("click", function() { 
    alert("Calling function"); 
}); 
1

可以considere下面的例子: jquery sample

例如

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 
<body> 
    <a id="aLink">First Paragraph</a> 
<script> 
    $("#aLink").click(function() { 
    alert("Calling function"); 
    }); 
</script> 

</body> 
</html>