Javascript 如何使用jQuery传递数据';单击事件/链接时的ajax方法?

Javascript 如何使用jQuery传递数据';单击事件/链接时的ajax方法?,javascript,jquery,ajax,Javascript,Jquery,Ajax,使用“老式”javascript,您可以使用服务器端代码提供的ID,将ID作为内联函数调用(onclick=“my_function(28)”或类似调用的参数 使用“new school”javascript,函数调用从元素中抽象出来,那么如何传递ID呢 我的猜测是: <a id="28" class="do-something" href="#">Do something</a> $('a.do-something).click(function(event){

使用“老式”javascript,您可以使用服务器端代码提供的ID,将ID作为内联函数调用(
onclick=“my_function(28)”或类似调用的参数

使用“new school”javascript,函数调用从元素中抽象出来,那么如何传递ID呢

我的猜测是:

<a id="28" class="do-something" href="#">Do something</a>

$('a.do-something).click(function(event){

  element_id = $(this).attr('id');

  $.get('something.php', { id: element_id });

  return false;

});

$('a.do-something)。单击(函数(事件){
元素_id=$(this.attr('id');
$.get('something.php',{id:element\u id});
返回false;
});
是否有您使用/见过的惯例或最佳实践


[更新:添加了return false;]

通常对于类似的内容,我只使用HREF来存储jQuery处理程序应该使用的URL:

<a class="do-something" href="something.php?id=28">Do something</a>

$('a.do-something).click(function(event){
  $.get($(this).attr('href'));
  return false;
});

$('a.do-something)。单击(函数(事件){
$.get($(this.attr('href'));
返回false;
});
这样,ID仍然可以存在,以防您需要它用于CSS。另外,如果您需要将多个参数发送到php函数中,您不必担心,它与正常情况一样都是URL的一部分


返回false可防止浏览器在单击链接时实际访问该链接。

通常对于类似的内容,我只使用HREF来存储jQuery处理程序应该使用的URL:

<a class="do-something" href="something.php?id=28">Do something</a>

$('a.do-something).click(function(event){
  $.get($(this).attr('href'));
  return false;
});

$('a.do-something)。单击(函数(事件){
$.get($(this.attr('href'));
返回false;
});
这样,ID仍然可以存在,以防您需要它用于CSS。另外,如果您需要将多个参数发送到php函数中,您不必担心,它与正常情况一样都是URL的一部分


返回false可防止浏览器在点击链接时实际访问该链接。

Parrots的答案最适合这种情况:如果您使用的是链接,href应指向对非JavaScript用户以及使用中键单击或右键单击书签或其他方式打开链接的用户有用的地方

如果你没有链接的目的地,你就不应该真正使用链接。您可以像这样使用
span
(尽管如果您想使其正确响应键盘,这需要一些tabindex和脚本帮助),或者通常最好(如果您不介意IE中额外的填充和移动像素的话)使用重新设置样式的按钮

但是,在一般情况下,有时确实需要包含不适合现有属性的附加数据,如
href
。有时这可能在
id
中,但是您使用的字符有点有限。例如,您的代码是无效的HTML,因为ID不能以数字开头。对于数字id,您可以尝试
id=“foo-28”
并从代码中提取数字

或者,您可以开始在类名中放置多个参数(
class=“foo-28 bar-16a”
),并使用JS函数拆分、匹配命名前缀并返回其余参数。类名中允许使用大多数字符,但当然不能使用其他空格。(您也可以在类名中以某种方式对其进行编码,例如URL编码。)

或者,您可以在元素中放置注释,并使用DOM方法获取注释对象并提取其数据。您可以将JavaScript/JSON放入其中,例如:

<span class="do-something"><!-- {foo: 28, bar: '16a'} --> Something </a>
什么

或者,您可以使用HTML5
数据-
属性。或者(…几个其他选项…

Parrots的答案最适合这种情况:如果您使用的是链接,href应该指向对非JavaScript用户和使用鼠标中键或右键单击书签或其他方式打开链接的用户有用的地方

如果你没有链接的目的地,你就不应该真正使用链接。您可以像这样使用
span
(尽管如果您想使其正确响应键盘,这需要一些tabindex和脚本帮助),或者通常最好(如果您不介意IE中额外的填充和移动像素的话)使用重新设置样式的按钮

但是,在一般情况下,有时确实需要包含不适合现有属性的附加数据,如
href
。有时这可能在
id
中,但是您使用的字符有点有限。例如,您的代码是无效的HTML,因为ID不能以数字开头。对于数字id,您可以尝试
id=“foo-28”
并从代码中提取数字

或者,您可以开始在类名中放置多个参数(
class=“foo-28 bar-16a”
),并使用JS函数拆分、匹配命名前缀并返回其余参数。类名中允许使用大多数字符,但当然不能使用其他空格。(您也可以在类名中以某种方式对其进行编码,例如URL编码。)

或者,您可以在元素中放置注释,并使用DOM方法获取注释对象并提取其数据。您可以将JavaScript/JSON放入其中,例如:

<span class="do-something"><!-- {foo: 28, bar: '16a'} --> Something </a>
什么
或者,您可以使用HTML5
数据-
属性。或者(…其他几个选项…

我不认为有更好的方法来实现这一点,是不是您忘记添加
return false到你的函数以停止默认链接操作我很难理解你的点击处理程序、id等的重要性。你可以扩展你的问题吗?是的,现在我看到鹦鹉回答我的方法看起来很愚蠢:)我不认为有更好的方法来实现这一点,是不是你忘了添加
返回false到你的函数以停止默认链接操作我很难理解你的点击处理程序、id等的重要性。你可以扩展你的问题吗?是的,现在我看到鹦鹉回答我的方法看起来很愚蠢:)谢谢,这是一个很好的方法我忘记了返回false:pyu可以使用
this.href
而不是
$(this.attr('href')
e.preventDefault()
而不是