使用速记if更改属性时遇到问题

时间:2013-05-28 21:24:05

标签: jquery shorthand-if

我只是想知道我是否可以得到一些指示。

我正在使用简写,如果根据是否切换div来更改文本。

这就是我对文本转换器所拥有的:

$(this).text($(this).text() == 'Email Me' ? 'Close Form' : 'Email Me');

我想按照这些行来更改锚点的title属性。我尝试使用以下内容:

$(this).text($(this).attr('title', == 'Email Me' ? 'Close Form' : 'Email Me')); //This throws up syntax errors in firebug because of where the == is placed

我也尝试过如下:

$(this).text($(this).attr('title') == 'Email Me' ? 'Close Form' : 'Email Me'); //This doesn't change the attribute at all.

我想我可能只是真的很蠢但我无法想出这个。我用谷歌搜索了它,似乎无法找到明确的答案。

只是想知道你是否对我可能出错的地方有任何建议。

提前致谢

3 个答案:

答案 0 :(得分:4)

您不应该使用attr吗?

$(this).attr("title", $(this).attr('title') == 'Email Me' ? 'Close Form' : 'Email Me');

而不是:

$(this).text($(this).attr('title') == 'Email Me' ? 'Close Form' : 'Email Me'); //This doesn't change the attribute at all.

答案 1 :(得分:3)

如果要更改属性,请更改属性,而不是文本:

$(this).attr('title', $(this).attr('title') == 'Email Me' ? 'Close Form' : 'Email Me');

请注意title是一个反射属性,因此如果没有jQuery,您可以更有效地执行此操作:

this.title = this.title == 'Email Me' ? 'Close Form' : 'Email Me';

但为了提高效率,你必须做成千上万次。


condition ? value : otherValue事件被称为“三元”运算符。它经常被称为“三元”运算符,但“三元”只意味着它有三个操作数(“二元”运算符[如+中的1 + 1]有两个,一个“一元”运算符[如-中的-n只有一个),所以从技术上讲,它是“一个”三元运算符。我只是大多数类似C语言的唯一一个......

答案 2 :(得分:0)

事实证明,这是我运行的插件的问题。我有一些醉意的插件来提供精美的工具提示。

一旦我停止使用它作为标签上的title属性,切换就完美了。我现在必须弄明白为什么这样做。

感谢您的帮助