我有一个奇怪的问题,但我希望我只是做一些愚蠢的事情.我正在尝试<img>使用jQuery 在元素上创建一个新属性,这一行:
$(selector).attr('selected', 'no');
Run Code Online (Sandbox Code Playgroud)
当我在Chrome中检查DOM时,无论我将值设置为什么,我都会看到selected ="selected".
只是一些额外的信息:我不能只使用布尔值,因为我需要跟踪"是","否"和"部分"属性值.我正在从img本身的"onClick"事件中调用JS函数,并this作为参数传递.我检查了方法中的对象,并传递了正确的对象; 设置属性的事实(即使是错误的值)也支持这一点.
我已经死定了,我在这里做了些蠢事......任何建议都会受到赞赏.
我创建了一个名为'loaded'的属性按钮,初始值为'no'.点击按钮我正在运行一些ajax,在它的最后我试图将'loaded'属性设置为'yes',这样如果用户不止一次点击按钮,ajax就不会再次运行.
我有这样的事情:http://jsfiddle.net/PDW35/2/
单击该按钮不会更改加载到"是".但是,如果您在.attr调用之后立即执行警报,请执行以下操作:
alert($(this).attr('loaded'));
Run Code Online (Sandbox Code Playgroud)
警报框确实包含"是",这没有用,因为一旦用户点击,上面的相同代码会在屏幕上显示"否"警告框.
如果我使用.prop而不是.attr,它的行为都是一样的.我在这里错过了一点或.prop和.attr只是不使用自定义属性?
编辑:根据以下评论使用ajax更新了jsfiddle:http://jsfiddle.net/PDW35/5/
美好的一天,
我有这样的DOM
<div class="Gallery">
<div class="GaleryLeftPanel">
<img id="img1" src="/Content/Public/images/1.png" style="z-index: 100" width="141"
height="140" alt="image 1" /></div>
<div class="GalleryMiddlePanel">
<img id="img2" src="/Content/Public/images/3.png" style="z-index: 99" width="715"
height="497" alt="image 2" /></div>
<div class="GaleryRightPanel">
<img id="img3" src="/Content/Public/images/2.png" style="z-index: 98" width="140"
height="140" alt="image 2" /></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我需要的是,如果我点击img1,img2替换为img1,img3替换为img2和IMG1被替换IMG3(圆周运动1-> 2,2-> 3,3-> 1).并且它是连续的...如果我点击img3然后它反向(1 <-2,2 <-3,3 <-1).
为此,我使用JQuery如下:
$('img#img1').click(function () {
var currentScr = $(this).attr('src');
var second = $('img#img2').attr('src');
var third = $('img#img3').attr('src');
$('img#img3').attr('src', second);
$('img#img2').attr('src', currentScr);
$('img#img1').attr('src', third);
});
$('img#img3').click(function …Run Code Online (Sandbox Code Playgroud) 这不是一个重复的问题attr,我只需要决定使用还是使用更好/更快/正确prop。最简单可靠的方法是检查列表。“使用更好的元素名称列表prop(name)和/或使用更好的列表attr(name)”。
PS:我使用的是 jQuery 1.9+,并且假设这attr()不是一个已弃用的方法。
决策示例(LIST有答案):
$(x).prop('id')是通过还是通过更好地获取 ID 值$(x).attr('id')?$(x).prop('title','BLABLA')用或 用 更改标题更好吗$(x).attr('title','BLABLA')?$(x).attr('selectedIndex')?$(x).attr('name')和$(x).prop('name')会返回不同的东西?也许完整的列表不是必需的,只需列出对 jQuery 产生一些影响或风险的事物即可。
关闭后编辑:请单击下面的重新打开链接以接受此编辑的问题文本。
我make总是重建Makefile目标(make 总是重建 Makefile 目标)的问题及其调查发现了另一个问题,这是这个问题的主题。重复执行以下R代码导致对象属性丢失数据转换操作期间。
为了记录,我不得不说我已经写过这个主题(在提取/替换操作期间保留对象属性的方法),但是这个问题和答案更笼统(我不正确,简单的保存属性是有效的 - 它在撰写本文时为我工作,因为当时我还没有执行操作,这对对象的属性有潜在危险)。
以下是我的 R 代码的摘录,其中我遇到了属性丢失的问题。
##### GENERIC TRANSFORMATION FUNCTION #####
transformResult <- function (dataSource, indicator, handler) {
fileDigest <- base64(indicator)
rdataFile <- paste0(CACHE_DIR, "/", dataSource, "/",
fileDigest, RDS_EXT)
if (file.exists(rdataFile)) {
data <- readRDS(rdataFile)
# Preserve user-defined attributes for data frame's columns
# via defining new class 'avector' (see code below)). Also,
# preserve attributes (comments) for the data …Run Code Online (Sandbox Code Playgroud) selector我的应用程序中有一个项目用作列表视图行的背景颜色。关键是该行在被点击/触摸时会改变颜色。
因此,选择器使用两个可绘制对象,一个用于按下状态,一个用于常规。文件:rowbgselector.xml在文件夹中res/color:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/rowbg_shape_selected" android:state_pressed="true"/>
<item android:drawable="@drawable/rowbg_shape" />
</selector>
Run Code Online (Sandbox Code Playgroud)
引用的两个可绘制对象定义res/drawable为具有纯色的简单矩形形状:
文件rowbg_shape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/row_bg"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
文件rowbg_shape_selected.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="?attr/colorAccent"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
这适用于 Lollipop 设备,但在 Lollipop 之前的任何设备上都失败,并出现一个没有说明太多的错误:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/rowbg_shape_selected.xml from drawable resource ID #0x7f02006c
我认为问题在于这是 Lollipop 中修复的错误,请参见此处:https : //code.google.com/p/android/issues/detail?id=26251
问题是我试图引用attr/colorAccent当然在我的主题中定义的。我有几个不同颜色的主题,用户可以从中选择,并且attr/colorAccent每个主题都不同。然而,似乎由于棒棒糖之前的这个错误,你不能在选择器中引用这样的属性......
我的替代选择是什么?我能想到的唯一选择是为每个主题创建一个单独的选择器 xml 文件,并添加类似的内容attr/bg_selector,然后为每个主题引用正确的选择器文件。这将花费我很长时间,更进一步,更改此选择器的任何内容将需要大量工作(如果稍后我想让颜色稍微变暗或变亮,我将不得不浏览所有这些文件......)。
没有其他选择了吗?
我(我认为)有一个简单的问题,但没有太多运气试图找到答案。pyqt 真的很新!
我根据多种因素动态地将许多 QtGui.QCheckBox() 小部件添加到 gridLayout 中。我的问题是,如何向每个 chkbox 小部件添加自定义属性?我想在每个 qt 小部件中存储一些自定义的东西。
谢谢你的帮助。一个基本的例子是最有用的。
干杯
编辑:我重写这个问题,因为我有两个相关的问题,也许可以一起更好地回答......
我有一些大的嵌套list,其结构几乎相同,但没有名称。的所有项目list都有attributes,我想将它们指定为 的所有级别中的名称list。此外,我想删除不必要的列表级别。
所以这:
before <- list(list("value_1"), list(list("value_2a"), list("value_2b")), list(list("value_3a"), list("value_3b"), list("value_3c")), list("value_4"))
for(i in 1:4) attr(before[[i]], "tag") <- paste0("tag_", i)
attr(before[[2]][[1]], "code") <- "code_2a"
attr(before[[2]][[2]], "code") <- "code_2b"
attr(before[[3]][[1]], "code") <- "code_3a"
attr(before[[3]][[2]], "code") <- "code_3b"
attr(before[[3]][[3]], "code") <- "code_3c"
str(before)
## List of 4
## $ :List of 1
## ..$ : chr "value_1"
## ..- attr(*, "tag")= chr "tag_1"
## $ :List of 2
## ..$ :List of 1 …Run Code Online (Sandbox Code Playgroud) 切换新的“Bootstrap 4”[隐藏]-属性的最佳方法是什么。不只是使用“display:block”隐藏和显示元素,而是删除和添加Attribute。
<button type="button" hidden class="hideMe btn btn-sm">Get Video</button>
<button class="toggle">toggle</button>
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法是这样的:http : //jsfiddle.net/49u2q/123/
$('button.toggle').on('click',function() {
if ($('button.hideMe ').is('[hidden]')) {
$('button.hideMe ').removeAttr('hidden');
} else {
$('button.hideMe ').attr('hidden','');
}
});
Run Code Online (Sandbox Code Playgroud) data.table具有优雅setattr的就地添加单个属性到列。有没有一种优雅的方法可以一步覆盖多个属性?例如,假设 adata.table有许多列,我想为列分配两个属性,为列分配x1三个属性,x3如下所示list:
a <- list(x1=list(label='X1', units='mm'),
x3=list(label='X3', comment='collected remotely', format='type 3'))
Run Code Online (Sandbox Code Playgroud)
我可以轻松编写处理a和调用setattr5 次的代码来完成此任务。但我希望有更好的方法。