我动态创建行,但我还需要传入控件的id和值
function AddClient() {
var uuid = guid();
$("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control' onkeyup='SearchClient($(this).attr('id'),$(this).val())'></row>")
function SearchClient(id, term) {
//do some lookups
}
得到错误(index):2 Uncaught SyntaxError: Unexpected token }
我的问题是$(this).attr('id')
,我应该用什么想法替换它?
答案 0 :(得分:1)
你可能错过了代码。
您可以“id”替换另一个文本,例如;
id='ClientName" + uuid
替换为“clientName”
clientName='ClientName" + uuid
因为您将自定义attr添加到html.Call clientName attr;
$(this).attr('clientName')
答案 1 :(得分:1)
建议代码重构可能很愚蠢,但如果你刚开始考虑这样做:
$scope.sync = function(){
$http.get(ip+'/tarefas/'+window.localStorage.getItem("user")).success(function(data) {
$scope.loading = false;
setTimeout(function () {
$scope.$apply(function(){
$scope.loading = true;
});
}, 1200);
$scope.task = angular.fromJson(data);
});
}
优点:单一装订
缺点:绑定在文档上,您可能希望将其绑定在其包含的表中。
答案 2 :(得分:1)
你可以这样做
function AddClient() {
var uuid = guid();
$("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control' onkeyup='SearchClient(this)'></row>");
}
function SearchClient(elemt) {
id= $(elemt).attr('id');
term= $(elemt).value();
//do some lookups
}
答案 3 :(得分:0)
试试这个,你的代码所具有的问题是keyup函数中id
之前的“'”。
$("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control' onkeyup='SearchClient($(this).attr(\"id\"),$(this).val())'></row>")
答案 4 :(得分:0)
由于您正在使用jQuery,请使用jQuery。完全删除内联代码,只为这些元素添加一个事件处理程序。像这样:
$(document).on('keyup', 'input[id^=ClientName]', function () {
SearchClient($(this).attr('id'),$(this).val());
});
然后你根本不需要内联代码:
$("#clientList").append("<row><input type='text' placeholder='type to search' name='clientName' id='ClientName" + uuid + "' class='form-control'></row>");
注意:您可能在调试时出错并且错误来自附加DOM元素的代码,而不是其中执行的代码。在代码中注意,语句后面有一个缺少的分号。如果问题中的代码是一个完整的例子,那就有点格式错误了。