如何保存行标题的值?这些是title=%s:
<a class="false" title=1106 href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a>
<a class="false" title=1153 href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a>
<a class="false" title=1175 href="/useradminpage?main_id=%s&display=false"><span class="small">(hide)</span></a>
...
我尝试了无数的变化,但没有一个有效。这就是我现在所拥有的:
<script>
$(document).ready(function() {
console.log("ready");
$("a.false").click(function(e) {
$(this).closest("tr.hide").hide("slow");
var main_id = a.title;
var display = "false";
e.preventDefault();
});
$("a.false").click(function() {
$.ajax({
url: "/useradminpage?main_id=%s&display=false",
data: {main_id: "main_id", display: "display"},
success: function(data) {
display_false()
alert("4 - returned");
}
});
});
});
</script>
这是关于这个主题的第三个问题。我感谢任何帮助。感谢。
答案 0 :(得分:5)
而不是
var main_id = a.title;
试
var main_id = $(this).attr('title');
因为如果我没错,“a”没有定义
答案 1 :(得分:2)
我怀疑我可能会遗漏某些内容,但我怀疑您的问题是使用a.title
代替this.title
:
$("a.false").click(function(e) {
$(this).closest("tr.hide").hide("slow");
var main_id = this.title; // or you could use the jQuery object approach: $(this).attr('title') instead
var display = "false";
e.preventDefault();
});
原始方法中的问题是a
将被解析为一个变量,该变量尚未赋值,也未被声明,因此它将返回undefined
或{ {1}}(充其量)。在null
方法的范围内,您将迭代各个节点;因此,要访问该节点的属性/属性,请使用each()
。
答案 2 :(得分:2)
我认为您要做的是在AJAX请求中传递title
属性的值。如果是这种情况,最简单的方法就是在一个事件处理程序中完成所有操作(有没有理由将2个不同的处理程序绑定到同一个事件?):
$("a.false").click(function(e) {
$(this).closest("tr.hide").hide("slow");
var main_id = this.title;
var display = "false";
e.preventDefault();
$.ajax({
url: "/useradminpage",
data: {main_id: main_id, display: display},
success: function(data) {
display_false();
alert("4 - returned");
}
});
});
您当前的问题是main_id
和display
不在第二个事件监听器的范围内,因此将是未定义的(并且不应引用它们,否则您只是传入字符串)。当您将data
对象传递给ajax
函数时,您实际上不需要将查询字符串添加到URL中。
除此之外,当您为main_id
分配值时,您正在使用a.title
。在这种情况下,a
未定义,您需要使用this
,这将是对点击元素的引用。
答案 3 :(得分:1)
要通过jQuery访问DOM元素的任何属性,可以使用.attr() function。 在你的特殊情况下你会这样做。
var main_id = $(this).attr('title');