jQuery:使用.attr('href',")调用javascript
jQuery: Use .attr('href',"") to call javascript
我有一个超链接,我正试图用jQuery更改的href值,以调用函数。以前,这是指一个url,这是我以前的代码,其中myUrl
是一个传入的字符串变量:
$('#lnkEdit').attr('href','" + myUrl + "');
我需要将其更改为调用函数。
我已经尝试过这样传递它,其中openDialog
只是我的弹出功能:
string editUrl = "javascript:openDialog('myUrl/EditForm.aspx')"
$('#lnkEdit').attr('href','" + editUrl + "');"
但这只是将我导航到函数,就像浏览器中的URL一样(浏览器试图导航到函数调用文本)。
有什么办法让它发挥作用吗?
您可以使用prop
方法,例如:
string editUrl = "javascript:openDialog('myUrl/EditForm.aspx')"
$('#lnkEdit').prop('href', editUrl);
但作为一个好的实践,使用一个函数来提供这个窗口将是一个好方法,例如:
$('#lnkEdit').on('click', function() {
openDialog('myUrl/EditForm.aspx');
});
典型的方法是附加一个点击处理程序:
$('#lnkEdit').on('click', function() {
openDialog('myUrl/EditForm.aspx');
});
或者,如果URL在HTML生成过程中来自其他地方:
<a id="lnkEdit" href="#" data-href="myUrl/EditForm.aspx">test</a>
然后:
$('#lnkEdit').on('click', function(e) {
e.preventDefault();
openDialog($(this).data('href'));
});
我想你想把它改成
var editUrl = "openDialog('myUrl/EditForm.aspx')";
$('#lnkEdit').attr('href',"#");
$('#lnkEdit').attr('onclick',editUrl);
这将对象设置为在单击时更改,而不是充当链接。这是一种稍微好一点的方法,而且我相信更简单。
相关文章:
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- 多个“;脚本调用"在SINGLE”内$(文档).ready()”;
- jQuery捕获"RangeError:超过了最大调用堆栈大小“;
- jQuery:使用.attr('href',")调用javascript
- 重复“;function(){}.调用(this)"在Uglified JS中
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- 要求JS 2.1.9引起“;最大调用堆栈"使用Grunt时出错
- Fine Uploader S3-无处安全调用异步“;setUploadSuccessParams()"
- 将对象设置为Backbone.js模型,而不必调用“;set()"在每一处房产上
- "堆叠外空间”;同时通过AJAX调用填充jsTree
- 得到"未捕获的类型错误:未定义的不是函数“;当试图从对象调用get()或set()时
- "TypeError:无法调用方法'匹配'未定义的“;Angular JS指令中的Morris
- Node.js服务器在没有调用“;end()"用于服务器发送的事件
- "无法调用方法'打开'未定义的“;使用indexedDB.open时出错
- jQuery获取"事件调用“;要素
- 为什么<车身负载=“;fn()">使用函数调用,但是window.onload=fn;使用处理程序函
- "访问控制允许原点不允许原点为null"使用jQuery调用web服务时出错
- 无法调用方法“”;setHtmlContent"在GAS中
- "与服务器的连接不成功”;尝试在WebView中调用javascript时